WinDbg分析dump文件介绍
1、WinDbg介绍
WinDbg是微软开发的免费源代码级的调试工具。WinDbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。具体界面见下图(图1)
图1:主窗体界面
2、WinDbg 分析dump步骤
2.1 、WinDbg分析dump文件基本上试通过命令的方式,所以先介绍几个相关命令。
1)!analyze : 扩展显示当前异常或bug的信息。一般使用!analyze -v
2) kv : 显示栈信息
3) ub : 向前反汇编,例如: ub (地址) 反汇编当前地址之前的两条指令
4) u : 反汇编,例如: u (地址) 反汇编当前地址以后的9条指令
5) uf <function address> : 反汇编函数
5) .exr: 查看EXCEPTION_RECORD信息
6) .cls : 清屏
。。。。。。。。
2.2、打开Dump格式文件
方式一:通过菜单【File】 -> 【Open Crash dump】 选择dump文件打开,
图2:打开dumpe文件
图3:打开后会打印一些dump的信息
方式二:通过CMD打开Dos命令窗口,切换到WinDbg所在目录,利用命令:WinDbg –z “D:/Lines2009-7-25-22-20-33-900.dmp”
这里只介绍第一种方式操作。
2.3、添加Symbol path(符号路径)
分析dump文件需要依赖pdb文件,所以这里的符号路径就是pdb文件所在的路径,如下图(图4),添加方式与添加操作系统的path路径的方式一样。
图4:(添加符号路径)
2.3、执行命令
图5
2.3.1 执行 !analyze –v, 分析dump文件,结果如下图(图6)
图6
该结果比较重要的部分是 EXCEPTION_RECORD 块。
// 崩溃时的异常记录,可以使用.exr查看
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
// 崩溃时所执行的函数地址
ExceptionAddress: 59c6f0d3 (GBQ_Custom_HeiLongJiang!GBQHeiLongJiangAfterFillJobServicePlugin::fillNormDBSearchScope+0x000003b3)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
// 附加异常码
NumberParameters: 2
Parameter[0]:00000000
Parameter[1]:00000000
Attempt to read from address 00000000 // 关键信息
2.3.2 执行 kv ,显示栈信息
2.3.3 分别执行前面介绍的命令,查看打印信息如 u/ub + (地址)命令:
u 59c6f0d3 这时可以详细看到崩溃的地方。
Ps:像这样的问题用vs可能看不出具体那里出现问题如下图: