C++程序崩溃时,使用Visual Studio静态分析dump文件

Window环境下的C++程序如果发生异常崩溃,首先会和客户联系,让帮忙取特定目录下的dump文件和log文件来分析崩溃的原因。不过发生崩溃的话,从log一般分析不出特定原因,这时候dump文件就起作用了。可以通过Visual Studio和Windbg来静态分析dump文件,定位发生异常的位置和调查可能的原因。

文章将介绍如何使用Visual Studio工具进行C++ 静态dump文件的分析。

1.打开dump文件

把dump文件拖进Visual Studio即可

2.启动dump文件,进行调试

点击【仅限本机进行调试】,启动dump(托管工程可以选择【仅限托管】或者【混合】)
在这里插入图片描述

3.定位异常位置
3.1dump文件pdb文件在同一目录

调试启动后,如果dump文件和pdb文件在同一个目录的,可以直接定位到异常代码行。
在这里插入图片描述

3.2dump文件pdb文件不在同一目录

调试启动后,如果dump文件和pdb文件不在同一个目录,会显示找不到pdb文件,则需要通过【新建路径】设置pdb文件的路径,然后点击【加载】,就可以定位到异常代码行了。或者把pdb重新放到和程序模块一个目录下,再从第一步开始。
在这里插入图片描述

3.3.查看调用堆栈

实际调试中,最终崩溃的地方往往发生在系统dll中。因为对于系统dll,我们没有对应的pdb,并且也不大可能是系统dll造成的异常,所以需要根据调用堆栈去查看是我们自己的哪个模块调用了系统函数。在没有设置自己程序的pdb时,如图是看不到详细调用堆栈的。
在这里插入图片描述
根据实际情况,把有可能发生问题的模块的pdb文件放入和dump同一目录,重新进行调试。
如图,pdb文件加载后,就可以看到发生崩溃时自己程序的调用堆栈了,并且具体到了函数和行数。双击调用堆栈那里的函数(蓝色遮盖区域),可以打开cpp并查看发生问题地方的上下文,并检查内存的变量值。(如果没有自动打开代码,只需按照提示设置正确的代码路径即可)
在这里插入图片描述


C++程序崩溃时,使用Windbg静态分析dump文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值