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