使用vs2008分析dump

本文介绍了如何使用Visual Studio 2008分析C++程序的dump文件,找出程序崩溃时的堆栈调用情况。通过关联pdb文件和源代码,可以在VS中调试dump,查看调用堆栈,定位问题所在行,从而进行问题分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着工作的需要,需要分析一个wins程序的dump,就不过多的去介绍dump了,它可以看成程序在crash瞬间产生的快照,在其中记录了当前堆栈的调用情况,OK下面介绍如何使用dump,找到程序在crash时函数的调用情况。

本文针对在线上程序crash产生的dump进行说明,本地产生的dump相似;C++程序发布出去时通常会把其产生的dll、pdb给打包发布出去,其中pdb时vs生成的用语调试的符号文件,保存着调试的信息,在Vs的工程属性可以设置(具体如何设置可以自行google一波)成在构建项目时创建PDB文件,一份源代码会产生其对应的dll与pdb信息;要分析dump就必须找到其对应源代码、pdb文件。

当拿到这三个文件后,我们可以用vs打开dump文件(双击即可),然后在vs中,Tools-Options-Debugging-Symbols添加相应的符号文件,这时候就需要我们将拿到的pdb文件路径添加在Symbol file(.pdb) locations:中,下面是我添加的情况:

这里写图片描述

其中第一行微软基础库的pdb信息,如果你在调试过程中不需要的话,可以不用;

OK,这样的话我们就把dump对应的pdb给关联起来了,这样可以找到crash时当前堆栈的信息,但是如果没有源代码的话我们无法看到具体在代码中的位置;这也就是为什么说源代码、pdb、dump缺一不可了。现在我们可以按f5进行调试,这时候我们vs的output中会输出pdb的load信息,直到找到dump中对应的crash位置,这时候vs会弹出很长的Unhandled exception at xxxxxx的对话框,这时候就点击break。

然后就可以在Call Stack中看到相应的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值