C++程序dll崩溃如何定位分析?

程序猿小伙伴们都知道,linux系统下如果程序出现崩溃问题,通过设置可以生成core文件,然后开始一波犀利的gdb操作精准地找到问题所在,很是得心应手。那么问题来了,在windows操作系统下会有core文件在程序开小差的时候提供我们分析定位吗,我们有没有很好的手段可以定位问题呢?

客户端崩溃:
其实在windows平台也是可以在崩溃时候生成类似core文件的dump文件,我们可以通过调试dump文件来还原程序崩溃时的状态,调试工具我推荐windbg,屡试不爽,很好用。“Windbg是在windows平台下,强大的用户态和内核态调试工具。相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大。它的另外一个用途是可以用来分析dump文件”。

如何让程序崩溃时候生成dump文件呢,这里需要我们在程序设计的时候添加dump文件生成代码,代码比较通用,度娘上也有很多种写法,这里我们就简单地贴下通用接口(见下图),我们在程序初始化的时候加载此接口就行。

在有了dump文件后,我们如何分析呢,这里还需要保留我们在生成dll的时候产生的pdb文件,一一对应。debug版本会生成pdb文件,release版本默认不会生成pdb文件我们需要设置下vc、vs编译器,具体的设置不多讲一般都在工程-设置里面有debug选项勾选就行。

安装windgb,可以通过win7.1sdk里自带的debug包进行安装dbg_x86.msi进行安装,安装成功后会出现windbg调试工具。

当程序崩溃时,我们已经有dump文件,pdb文件,dll文件,我们简单介绍下怎么样用windgb工具来分析出错的代码行,首先需要配置Symbol path右击file->Symbol file path进行符号表路径设置,一般路径为:C:\Symbols;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols 在c盘新建目录Sysmbols,把dll和pdb文件放到以及dump文件都放在这个目录下。

设置sysmbol路径后,直接打开dump文件,右击“file-open crash dump”,选择生成的dump文件。这个时候windgb加载dump文件需要等待一会,加载完成后,在最下面的命令行窗口输入“!analyze -v”对文件进行分析,结果如下图所示,我们就可以精准的知道代码的哪一行会有问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值