1. 首先設置符號表路徑
在系統環境變量添加一個 _NT_SYMBOL_PATH 值為srv*d:\symbols*http://msdl.microsoft.com/download/symbols
這樣IDA, windbg, vs 都會自動到該目錄加載符號表.
對於這個路徑d:\symbols, 可以自定義任何位置, 最好不要用離線符號表,因為你根本就找不到對應的系統版本,而且
對於win10等仍然在更新的系統,符號表過一段時間就會有所變化,到時又要重新下載一個多G的符號表,反而麻煩.
2.所有不同版本操作系統的符號可以放在同一目錄d:\symbols下.
為什么?
本人經過測試,同一個文件的符號表會在該目標目錄下生成以hash值命名的不同文件夾,例如ntkrnlmp.pdb:
對於這2個文件夾,一個是本機win10的,還有一個是win7 64位系統的, 所以如果有xp的,win8的, 甚至不同更新版本的win10的這個ntkrnlmp.pdb
符號表,會同時有多個文件夾對應不同的版本,所以不需要擔心沖突.
3.設置好符號表路徑還是出錯
解決方案:
(1)首先網絡能通, 直接在瀏覽器訪問http://msdl.microsoft.com/download/symbols 看能不能打開
(2) 對於被調試目標,例如xp和win7 64位系統, 應該使用不同版本的windbg, 例如xp可以使用6.X版本的32位的windbg來進行內核調試
而win7 64位最好使用64位的 10.X版本的windbg調試. 否則 如果用32位的6.x版本調試win7 64位就會出現 在存儲符號表的目錄中下載了符號表
但是只有1KB大小,顯然是錯的, 當時這個問題糾結了我很久, 后來換了64位的 10.X版本的windbg 設置好符號表路徑后 自動解決問題