【无标题】windbg 分析dump文件

windbg 分析dump文件

windbg 分析dump文件 - 简书 (jianshu.com)

Windows下的程序如果设计有问题,如存在越界、访问空指针等,会出现崩溃的现象.
如下:

程序崩溃截图

崩溃的时候就需要分析原因,方便分析和后续优化程序.
此时一种方法就是用::MiniDumpWriteDump
生成dump文件(.dmp), 记录崩溃是的系统信息和堆栈信息等.
生成dump文件后,研发人员就可以用windbg工具进行分析.

  • 打开dump文件

Open Crash Dump

选择dump文件

  • 指定Symbol File Path

    指定**Symbol File Path**


    即指定符号文件(比如.pdb)所在的路径。
    符号文件包含了相关二进制文件的调试信息,以.pdb戒.dbg为扩展名。
    WinDbg使用符号文件来确定调用栈,堆及其他重要信息。

A native C++ PDB file contains quite a bit of information:

  1. Public, private, and static function addresses
  2. Global variable names and addresses
  3. Parameter and local variable names and offsets where to find them on the stack
  4. Type data consisting of class, structure, and data definitions
  5. Frame Pointer Omission (FPO) data, which is the key to native stack walking on x86
  6. Source file names and their lines

.pdb文件中包含了

  1. 共有、私有、静态函数的地址
  2. 全局变量的名称和地址
  3. 参数和局部变量的名称和在栈中的偏移量
  4. 类和结构体等定义
  5. Frame Pointer Omission (FPO) data
  6. 源文件名称及其行号
  • 分析崩溃的位置
    运行命令:

!analyze -v

!analyze -v

运行结果中最重要的就是STACK_TEXT, 用于显示崩溃时的调用堆栈信息:

STACK_TEXT

STACK_TEXT下的第一行一般最重要,可指示最终崩溃的位置:

崩溃位置


可以看出crashrpt_dempdlg.cpp文件的165行(OnBnClickedButtonCrash函数中)发生了崩溃问题.

FAULTING_SOURCE_CODE段可以查看崩溃位置的源码.

有的还可打印出源码的崩溃位置

可以看出165行代码的地方因为访问已经释放的指针而出现崩溃.

References:

https://www.wintellect.com/pdb-files-what-every-developer-must-know/



作者:FlyingPenguin
链接:https://www.jianshu.com/p/ee979eaadf34
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值