该文章参考网上内容,加上一些些自己的使用经验。
Ø 配置符号路径
WinDbg主菜单——File——Symbol Search Path
输入框中的输入规则如下:
1)配置程序对应symbol文件的路径
2)多个路径之间使用分号隔开
3)配置微软符号文件的路径:
srv*"D:\Symbols"*http://msdl.microsoft.com/download/symbols
"srv"符号服务器的标识
"D:\Symbols"本地缓存路径,windbg会将使用到的符号文件下载存放在该目录,并在下次执行时,优先寻找该目录
" http://msdl.microsoft.com/download/symbols"符号服务器地址,该地址为微软符号服务器地址
4)微软符号地址离线下载地址:
"http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx"
5)当前程序的符号需要在编译器设置编译过程中生成符号文件,VC6.0需要配置,配置方式为:项目设置——链接——常规——勾选“产生调试信息”,(本人现用汉化版,英文版设置方法相同)
Ø 配置源码位置
1)主菜单——FILE——Source Search Path
2)多个源码路径使用分号隔开
3)使用源码调试,必须设置编译器在编译的过程中禁用优化。(现在没有发现其它办法,因此感觉源码调试在CrashDump分析中,用处不是很大,,待学习中)
Ø 相关指令
操作指令 | |
!analyze -v | 自动对.dmp做基本的分析 |
.ecxr | 检查EXCEPTION_RECORD |
Symbol命令 | |
ld module | 加载pdb |
.reload /f | 强制加载所有模块 |
lm | 查看已加载的模块列表 |
x module!symbol | 查询指定名称的symbol |
ln address | 显示指定地址对应的symbol |
执行流程分析 | |
~0s | 切换线程 |
kb/kv/k.. | 显示调用堆栈 |
u/ub/uf | 反汇编代码 |
dds | 查看一段地址中的数据,并显示其对应的symbol |
|
|
数据分析 | |
r | 查看/修改寄存器 |
? | 计算表达式的值 |
.expr | 表达式切换 |
db/dd/du/da | 显示内存中的数据:分别按照byte/dowd/unicode string/ansi string |
dv | 显示局部变量列表 |
dt | 显示指定symbol的结构 |
|
|
分析效果图:
报错代码截图:
WinDbg分析情况截图: