Windbg调试符号概括

    调试符号对于调试器的正常工作很重要,如果缺少调试符号或调试符号不匹配,那么调试器就可能显示出错误的结果。因此在调试过程中正确的加载和使用调试符号是非常关键的。使用调试符号一般按照下面步骤完成:1.设置符号搜索路径;2.加载符号文件;3.检查符号是否加载成功。

1.设置符号搜索路径

.sympath 命令 设置或增加符号路径,如:

.sympath SRV*d:\symbols*http://msdl.microsoft.com/download/symbols

将路径d:\symbols目录和微软符号服务器设置为符号路径

.sympath + d:\symbols

将d:\symbols目录加入到符号搜索路径中

.symfix 命令 自动将符号路径设置为微软符号服务器,它也可以追加本地目录,如

.symfix + d:\symbols

将微软符号服务器设为符号搜索路径,并且在其后添加d:\symbols目录到符号搜索路径中

2.加载符号文件

ld和.reload 命令 直接加载符号文件,如:

ld kernel32 加载kernel32库及其符号文件

.reload 重新加载已加载进程的符号文件,后跟/f参数表示强制重新加载,如:

.reload /f NT 强制重新加载解析NT模块符号文件

某些使用符号的命令也可以触发调试器来加载符号,如栈回溯命令(k*)和反汇编命令等。

3.检查符号是否加载成功

!sym noisy 开启符号加载吵杂模式,来显示符号加载的过程信息

!sym quiet 关闭符号加载吵杂模式,不显示符号加载的过程信息

!lmi 观察模块信息,如!lmi nt 观察nt模块信息,其中包含了该模块的符号信息

!lm 列出加载的模块信息列表

!lm v 包含更丰富信息的模块信息列表

这些命令可以配合使用,以加载nt模块为例,步骤如下:

.sympath SRV*d:\symbols*http://msdl.microsoft.com/download/symbols

设置符号搜索路径

!sym noisy                                                                                         

开启符号加载吵杂模式

.reload /f nt                                                                                        

强制重新加载nt模块及其符号

!lmi nt                                                                                                

查看nt模块信息,确保符号加载成功

!sym quiet                                                                                         

关闭符号加载吵杂模式

总结一下加载调试符号的基本方法,比较实用。

原文地址:https://www.cnblogs.com/elvisxu/p/2078921.html