!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