Dump分析实例

本实例基于VS开发,利用Windbg程通过序崩溃生成的dump文件进行简单的分析,借此了解dump分析的主要流程。

  • 什么是dump文件?

即内存存储文件,一个进程或系统在某个给定时间的快照。也是内存镜像,保存了程序的执行状态。

通俗地理解,dump文件是程序发生异常甚至崩溃时,保存当时程序运行状态的文件,主要用来分析程序崩溃原因或蓝屏原因。

  • 如何生成dump文件?

方法一:使用任务管理器
前提:程序运行崩溃后,没有自动退出的情况下。
任务管理器找到相应进程,右键选择“创建转储文件”,会在默认目录下生成该程序的dump文件。
在这里插入图片描述
方法二:使用Windbg抓取
前提:程序运行崩溃后,没有自动退出的情况下。
运行程序exe,在“Attach to a Process…”中选择对应程序
在这里插入图片描述
输入命令: .dump [/ma/mdi] [存放路径]
在这里插入图片描述
- 如何用Windbg打开dump文件?

  1. “Symbol file path ”设置pdb文件目录

     pdb文件:保存程序的基本数据(变量名、参数等以及其对应行数),在vs链接时形成。
    
  2. “Source file path”设置对应源代码目录(sln所在的目录)

  3. “open crash Dump”打开调试的dump文件

注意:若报错如下:
在这里插入图片描述
dump文件需要加载wow64exts才能访问32位数;执行命令:.load wow64exts
将32位dump转为64位;执行命令:!sw

  • 这个例子使用简单的空指针崩溃test。

一般先执行命令:!analyze -v
在这里插入图片描述

根据STACK_TEXT(显示崩溃时的调用堆栈信息)分析:最终崩溃位置:在wmain函数(主函数),
根据FAULTING_SOURCE_CODE分析:可以看出是调用了空指针而导致的崩溃。

不过从现实的例子来说,只看FAULTING_SOURCE_CODE是不能准确定位的,需要结合STACK_TEXT显示的各函数相对位置,结合代码分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值