WinDbg調試:配置和查看符號


設置符號路徑

利用環境變量設置符號路徑

在WinDbg啟動時,會根據 _NT_ALT_SYMBOL_PATH 和 _NT_SYMBOL_PATH 的值設置符號路徑:

> set _NT_ALT_SYMBOL_PATH="D:\symbols" > windbg notepad.exe

利用啟動參數設置符號路徑

可以使用選項 -y 來指定符號路徑:

> windbg -y "E:\symbols" notepad.exe

在WinDbg命令行中設置和查看符號路徑

查看符號路徑:

0:000> .sympath

設置符號路徑:

0:000> .sympath D:\symbols

追加符號路徑:

0:000> .sympath+ G:\work\symbols

設置 Microsoft 公有符號存儲庫:

0:000> .symfix

追加 Microsoft 公有符號存儲庫:

0:000> .symfix+

通過 cache* 設置緩存:

0:000> .sympath cache*d:\symbols;G:\work\symbols

設置符號服務器,基本語法為:SRV*[cache*]toppath,其中 SRV 表示這是一個符號服務器路徑,[cache*] 用來設置存儲從服務器下載的符號文件的路徑。下例設置 Microsoft 公有符號服務器路徑,並將下載的符號文件存儲在 D:\symbols 目錄下。

0:000> .sympath SRV*D:\symbols*http://msdl.microsoft.com/download/symbols

查看已加載的模塊和符號文件

通過 lm 查看已加載的模塊和符號文件:

0:000> lm start end module name 013a0000 013de000 notepad (deferred) ... 77160000 772e3000 ntdll (export symbols) C:\WINDOWS\SYSTEM32\ntdll.dll

 

通過 lmi 查看模塊頭部信息:

0:000> !lmi ntdll.dll Loaded Module Info: [ntdll.dll] Module: ntdll Base Address: 77160000 Image Name: ntdll.dll Machine Type: 332 (I386) Time Stamp: 58256ca0 Fri Nov 11 15:00:48 2016 Size: 183000 CheckSum: 1883ce Characteristics: 2102 Debug Data Dirs: Type Size VA Pointer CODEVIEW 23, 1f9ec, 1edec RSDS - GUID: {9D5EBB42-7B34-49C0-BA16-0009A9070625} Age: 1, Pdb: wntdll.pdb ?? 554, 1fa10, 1ee10 [Data not mapped] Image Type: FILE - Image read successfully from debugger. C:\WINDOWS\SYSTEM32\ntdll.dll Symbol Type: EXPORT - PDB not found Load Report: export symbols

重新加載符號

通過 .reload 重新加載符號。注意這條命令並不會真正的重新加載符號,而只是把已加載模塊的符號信息清除,在具體執行需要解析符號的命令時,才真正加載符號。

0:000> .reload

重新加載某個模塊:

0:000> .reload combase.dll

重新加載某個模塊,並強制解析:

0:000> .reload /f combase.dll

通過 !sym noisy 打開執行 .reload 系列命令時的詳細信息:

0:000> !sym noisy

通過 !sym quiet 關閉執行 .reload 系列命令時的詳細信息:

0:000> !sym quiet

驗證符號

通過 !chksym 來驗證符號文件與映像文件是否匹配:

0:000> !chksym bcrypt

C:\WINDOWS\SysWOW64\bcrypt.dll Timestamp: 584A7C20 SizeOfImage: 1B000 pdb: bcrypt.pdb pdb sig: BEFD22F9-21C0-4067-B22B-B4CC1E8ED238 age: 1 Loaded pdb is d:\symbols\bcrypt.pdb\BEFD22F921C04067B22BB4CC1E8ED2381\bcrypt.pdb bcrypt.pdb pdb sig: BEFD22F9-21C0-4067-B22B-B4CC1E8ED238 age: 1 MATCH: bcrypt.pdb and C:\WINDOWS\SysWOW64\bcrypt.dll

查看符號

通過 x 命令查看符號,語法為:x [options] module!symbols。其中 module 和 symbols 中可以包含通配符。

在 notepad 模塊中查找包含 Thread 的符號:

0:000> x notepad!*Thread*

通過 ln 列出與特定地址相關的符號:

0:000> ln 013bf344 (013bf344) notepad!_imp__CoCreateFreeThreadedMarshaler | (013bf348) notepad!_imp__CoWaitForMultipleHandles Exact matches: notepad!_imp__CoCreateFreeThreadedMarshaler = <no type information>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM