windbg 出現重復的星星框提示時
!sym noisy
.reload
符號驗證:
上面講到.reload的時候,我們說過,符號文件會出現不匹配的情況。這是很有可能的,程序員在後期測試的時候可能會將工程多次編譯,為了維護多個版本而使得自己也被搞混。可以使用下面的命令驗證一個模塊的符號文件:
- !chksym <模塊名> [符號名]
加載選項:!sym
有兩類符號加載選項。第一類是Noisy/Quiet,Noisy選項將打印符號加載的詳細信息,Quiet選項則忽略這些信息。第二類是Prompts/Prompts off,即是否允許執行提示(Prompts)對話框。
一般都是在調用.reload 命令之前,執行加載選項命令,以見立竿見影之效。
所謂Noisy是吵鬧的意思,調試器在搜索、加載符號的時候,會顯示更多與搜索有關的信息。而安靜模式下,則不會顯示這些信息。不管吵鬧與否,都不會影響到最終的搜索、加載結果。
當從網絡上下載符號文件的時候,可能會碰到網絡服務器要求客戶進行安全認證的情況,如果開啟Prompts選項,則彈出認證對話框,讓用戶輸入認證信息;否則,不彈出對話框,並且不會下載符號文件。
不加任何參數的情況下,顯示當前加載選項設置,下面的清單表明當前的設置為Quite及Prompts模式:
lkd> !sym !sym <noisy/quiet - prompts/prompts off> - quiet mode - symbol prompts on
1: kd> .reload SYMSRV: BYINDEX: 0x47 d:\symbols*http://msdl.microsoft.com/download/symbols ntoskrnl.exe 59029C7C850000 SYMSRV: UNC: d:\symbols\ntoskrnl.exe\59029C7C850000\ntoskrnl.exe - path not found SYMSRV: UNC: d:\symbols\ntoskrnl.exe\59029C7C850000\ntoskrnl.ex_ - path not found
SYMSRV: HTTPGET: /download/symbols/ntoskrnl.exe/59029C7C850000/ntoskrnl.exe
SYMSRV: HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
符號庫先從ntoskrnl.exe 這個文件夾查找ntoskrnl 差找不到,進行聯網查找.結果也沒查找到.
換了好幾個文件夾後,才用了正確的pdp 後綴的文件查找那個ntoskrnl.exe
3C77A20382CE4024A425C6A53F4B167F1 //這個文件目錄在symbols \ntkrnlmp.pdb 不存在,我試圖把存在的文件夾改成與這個相同,結果如下報錯,因為上邊 原文件夾下有程序需要的文件,
SYMSRV: PATH: d:\symbols\ntkrnlmp.pdb\3C77A20382CE4024A425C6A53F4B167F1\ntkrnlmp.pdb
SYMSRV: RESULT: 0x00000000 DBGHELP: d:\symbols\ntkrnlmp.pdb\3C77A20382CE4024A425C6A53F4B167F1\ntkrnlmp.pdb - mismatched pdb DBGHELP: ntkrnlmp.pdb - file not found DBGHELP: Couldn‘t load mismatched pdb for ntkrnlmp.exe *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrnlmp.exe - DBGHELP: nt - export symbols Loading Kernel Symbols
第二次運行reload 竟然上邊這步成功了.
3C77A20382CE4024A425C6A53F4B167F1 SYMSRV: UNC: d:\symbols\ntkrnlmp.pdb\3C77A20382CE4024A425C6A53F4B167F1\ntkrnlmp.pdb - path not found SYMSRV: UNC: d:\symbols\ntkrnlmp.pdb\3C77A20382CE4024A425C6A53F4B167F1\ntkrnlmp.pd_ - path not found SYMSRV: UNC: d:\symbols\ntkrnlmp.pdb\3C77A20382CE4024A425C6A53F4B167F1\file.ptr - path not found SYMSRV: HTTPGET: /download/symbols/ntkrnlmp.pdb/3C77A20382CE4024A425C6A53F4B167F1/ntkrnlmp.pdb SYMSRV: HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND SYMSRV: HTTPGET: /download/symbols/ntkrnlmp.pdb/3C77A20382CE4024A425C6A53F4B167F1/ntkrnlmp.pd_ SYMSRV: HttpQueryInfo: 801900c8 - HTTP_STATUS_OK SYMSRV: ntkrnlmp.pdb from http://msdl.microsoft.com/download/symbols: 1266777 bytes - copied SYMSRV: PATH: d:\symbols\ntkrnlmp.pdb\3C77A20382CE4024A425C6A53F4B167F1\ntkrnlmp.pdb SYMSRV: RESULT: 0x00000000
windbg 出現重復的星星框提示時