3DMP engines
3D그래픽스 물리 수학, 프로그래밍 GPU Shader 게임엔진 알고리즘 디자인패턴 matlab etc..
체크섬위 위치는
vs 에서
린크-고급-체크섬 : 예/RELEASE 로 설정
예/RELEASE 이것은 원래 예/CHECKSUM 정도의 이름이였어야 하는데 이름이 잘못 지어진 것
이렇게게 설정해 놓아야 체크섬 정보값이 세팅되어 Unable to verify checksum for ... 워닝 이 발생하지 않는다
아래 링크는 좀 더 자세하게 이부분에 대해 다룬 블로그이다.
http://blogs.msdn.com/b/kikiwaka/archive/2009/03/13/dbg-unable-to-verify-checksum-for.aspx
Windbg 는 symbol 을 비교할 때, date, timestamp, image Size, checksum 를 사용합니다.
0:000> lm v m Addemup start end module name 00290000 002ab000 Addemup C (private pdb symbols) D:\Studies\Debugging\DebugFest\Addemup\Debug\Addemup.pdb Loaded symbol image file: D:\Studies\Debugging\DebugFest\Addemup\Debug\Addemup.exe Image path: Addemup.exe Image name: Addemup.exe Timestamp: Wed Mar 11 18:47:51 2009 (49B788C7) CheckSum: 00000000 ImageSize: 0001B000 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4 |
즉, executable file 과 함께 생성된 pdb file 을 사용해야 합니다. (Linker 가 pdb flle 을 생성합니다.) 하지만,함께 생성된 pdb file 을 사용하더라도 아래와 같은 warning 을 볼 수 있습니다.
0:000> .reload /f Reloading current modules . SYMSRV: ...\Addemup.pdb not found SYMSRV: ... not found DBGHELP: ...\Addemup\Addemup.pdb - file not found DBGHELP: ...\Addemup\exe\Addemup.pdb - file not found DBGHELP: ...\Addemup\symbols\exe\Addemup.pdb - file not found
*** WARNING: Unable to verify checksum for Addemup.exe DBGHELP: Addemup - private symbols & lines ...\Debug\Addemup.pdb ... |
이는 해당 exe file 의 checksum 이 00000000 일 경우가 큽니다. (이미 lm v m 으로 확인했습니다만...)
dumpbin 을 사용하여 해당 file 의 checksum 을 확인 할 수 있습니다.
dumpbin /headers [file name]
OPTIONAL HEADER VALUES 10B magic # (PE32) 9.00 linker version 3600 size of code 4200 size of initialized data 0 size of uninitialized data 11113 entry point (00411113) @ILT+270(_mainCRTStartup) 1000 base of code 1000 base of data 400000 image base (00400000 to 0041AFFF) 1000 section alignment 200 file alignment 5.00 operating system version 0.00 image version 5.00 subsystem version 0 Win32 version 1B000 size of image 400 size of headers 0 checksum |
또는 windbg extension command 인 !lmi 로 볼 수 있습니다. (lm v m 으로 가능합니다.)
0:000> !lmi Addemup Loaded Module Info: [addemup] Module: Addemup Base Address: 00290000 Image Name: Addemup.exe Machine Type: 332 (I386) Time Stamp: 49b788c7 Wed Mar 11 18:47:51 2009 Size: 1b000 CheckSum: 0 Characteristics: 102 Debug Data Dirs: Type Size VA Pointer CODEVIEW 51, 16320, 4d20 RSDS - GUID: {A6A1E6D2-384D-4C1A-B6FE-306B1DDC87DD} Age: 2, Pdb: ...\Addemup\Debug\Addemup.pdb Image Type: FILE - Image read successfully from debugger. ...\Addemup.exe Symbol Type: PDB - Symbols loaded successfully from image path. ...\Addemup.pdb Compiler: Resource - front end [0.0 bld 0] - back end [9.0 bld 21022] Load Report: private symbols & lines, not source indexed ...\Addemup.pdb |
이는 Visual Studio 2005 / 2008 win32 application 또는 .NET application 이 debug mode 로 build 했을 때, checksum 을 0으로 setting 하기 때문에 발생하는 문제입니다. 따라서, 이는 symbol 이 틀린 것이 아닙니다. Debug Mode 일 때 Visual Studio Linker 는 default 로 checksum 정보를 입력하지 않습니다. Linker option 에/RELEASE 를 추가하면, 아래와 같이 정상적으로 checksum 이 있는 것을 확인 할 수 있습니다.
0:000> lm start end module name 010a0000 010a8000 Addemup (deferred) 6cd70000 6ce93000 MSVCR90D (deferred) 77040000 77150000 kernel32 (deferred) 77840000 779a0000 ntdll (private pdb symbols) 0:000> !sym noisy noisy mode - symbol prompts on 0:000> ld Addemup ... Symbols loaded for Addemup 0:000> lm start end module name 010a0000 010a8000 Addemup (private pdb symbols) 6cd70000 6ce93000 MSVCR90D (deferred) 77040000 77150000 kernel32 (deferred) 77840000 779a0000 ntdll (private pdb symbols) 0:000> !lmi Addemup Loaded Module Info: [addemup] Module: Addemup Base Address: 010a0000 Image Name: Addemup.exe Machine Type: 332 (I386) Time Stamp: 49ba1865 Fri Mar 13 17:25:09 2009 Size: 8000 CheckSum: e4b8 ... |
'디버깅 & 스킬 > WinDbg 사용법' 카테고리의 다른 글
[ 세미나 1탄 ] WinDbg... Part 1. (0) | 2012.12.12 |
---|---|
WinDbg 명령어들 (0) | 2012.12.09 |
WinDbg 사용법, [마이크로소프트 심볼로드 주소] (0) | 2012.12.08 |
winDbg 를 기본 디버거로 설정 (0) | 2012.12.06 |
WinDbg 3가지 연결방법 (0) | 2012.12.05 |