1. 程式人生 > >windbg符號路徑設定

windbg符號路徑設定

0x00 前言

windbg沒有引入符號檔案(pdb)會導致系統庫上的變數,堆疊等資訊無法顯示。

0x01 簡介

PDB(Program Database),是微軟開發的用於儲存程式除錯資訊的檔案格式。pdb檔案是由原始碼在編譯期生成,儲存了原始檔名稱,變數名,函式名,FPO(幀指標),對應行號等資訊。由於體積龐大,同時出於安全性考慮,可執行程式exe或者dll檔案都是無符號的。

在windbg中執行無符號程式,會得到如下錯誤提示:

**********************************************************************
*** *** *** *** *** *** Your debugger is not using the correct symbols *** *** *** *** In order for this command to work properly, your symbol path **
* *** must point to .pdb files that have full type information. *** *** *** *** Certain .pdb files (such as the public OS symbols) do not *** *** contain the required information. Contact the group that *** *** provided you with these symbols if you need this command to **
* *** work. *** *** *** *** Type referenced: ntdll!_HEAP_ENTRY *** *** *** ************************************************************************* Invalid type information

0x02 配置符號檔案

方法一:

在windbg的命令列中直接輸入:

0:040> .sympath SRV*c:\localsymbols*http://msdl.microsoft.com/download/symbols
0:040> .reload

這種使用url的方法最為推薦,因為符號檔案會從微軟伺服器上自動拖拽,並永久快取。
其中,c:\localsymbols如果不存在該目錄,windbg會自動建立。

方法二:

Ctrl+s在彈出的視窗中輸入你的符號路徑:

SRV*c:\localsymbols*http://msdl.microsoft.com/download/symbols

圖中reload也是必須的。
這裡寫圖片描述

方法三 離線符號檔案下載

這種方法已經失效,網址如下:
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-symbols
微軟從2018年5月份開始已經不再提供離線符號檔案。提及離線的原因是,網上很多老貼會說用方法三,其實已經過期無效了。
這裡寫圖片描述

方法四 登錄檔和環境變數

修改登錄檔和環境變數都可以,不過不常用,就不說了(LZ太懶了)

0x03 常用命令

開啟符號檔案載入資訊的詳細輸出

0:000> !sym noisy

載入符號檔案

0:000> .sympath srv*c:\symstore.pri*http://msdl.microsoft.com/download/symbols

重新載入應用程式中用到的所有模組

0:000> .reload /f

測試一個符號檔案對某個模組的有效性

0:000> !chksym ntdll.dll

0x04 一些軟體的符號倉庫

Crhome: https://chromium-browser-symsrv.commondatastorage.googleapis.com
Firefox: https://symbols.mozilla.org/
Nvidia: https://driver-symbols.nvidia.com/
AMD: https://download.amd.com/dir/bin

0x05 參考文獻

https://en.wikipedia.org/wiki/Program_database
https://msdn.microsoft.com/zh-cn/library/ms241613.aspx
https://blog.csdn.net/hgy413/article/details/7555378
https://blog.csdn.net/witxjp/article/details/8118481
https://blog.csdn.net/bcbobo21cn/article/details/51683137
https://developer.mozilla.org/en-US/docs/Mozilla/Using_the_Mozilla_symbol_server
https://www.chromium.org/developers/how-tos/debugging-on-windows/windbg-help