WinDbg分析dump文件介绍

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可能看不出具体那里出现问题如下图:

 

 

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windbg是Windows平台上的一款强大的调试工具,可以用于分析dump文件。当一个程序崩溃或异常退出时,系统会生成一个dump文件,其中包含了程序在崩溃前的内存状态、寄存器的值以及调用栈等信息。通过分析dump文件,可以帮助我们确定程序崩溃的原因。 使用Windbg分析dump文件的步骤如下: 首先,打开Windbg并选择“File”菜单中的“Open Crash Dump”,然后选择要分析dump文件。打开dump文件后,Windbg会加载其中的调试信息,包括程序、模块、符号等。 在Windbg的命令窗口中,可以输入一系列的命令来分析dump文件。其中一些常用的命令如下: 1. "!analyze -v":分析dump文件并提供详细的分析报告,报告中包含了崩溃的原因和相关的线程堆栈信息。 2. "kb":显示当前线程的调用栈,可以根据调用栈信息来查找崩溃的位置。 3. "lm":显示加载的模块信息,可以查看程序中加载的模块和其对应的版本号。 4. ".exr -1":显示当前异常的记录,包括异常的类型和相关的寄存器的值。 5. ".reload /f":强制重新加载符号文件,以确保符号信息的准确性。 通过分析命令的执行结果,我们可以逐步追踪问题并找到程序崩溃的原因。在分析过程中,还可以使用其他的命令来查看内存的内容、寄存器的值以及线程的信息等。 总的来说,Windbg是一款功能强大的调试工具,通过分析dump文件可以帮助我们深入了解程序崩溃的原因,从而进行相应的调试和修复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值