使用VS2013分析DMP文件
当一个发布的.NET应用程序出现app crash,无法通过日志分析异常原因时,就需要通过分析DMP文件了,传统方式是通过WinDbg来分析DMP文件,但是WinDbg用起来不是很方便,其实VS就是一个很好的DMP文件分析工具,这里我们通过一个简单的控制台项目来分析一个DMP文件。
一、准备一个Demo项目
(1)在VS中新建一个控制台项目,取名Sobey.NullPointerDemo,并在Main方法中写入以下代码:
class Program
{
static void Main(string[] args)
{
Person p = null;
// NullPointerException will happen in next line
Console.WriteLine("{0}-{1}", p.ID, p.Name);
Console.ReadKey();
}
}
其中,Person类的定义如下:
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
经实验,.NET Framework版本号4.0及以上都可以。

(2)设置为Release,并编译生成可执行文件
(3)运行.exe程序,出现crash现象,在任务管理器中生成DMP文件(在指定exe上右键菜单中选择创建转储文件)


二、分析DMP文件
(1)到生成目录下将生成的DMP文件拷贝到Release目录下(和exe、pdb一个目录下)
(2)双击DMP文件会直接进入VS,可以看到Summary信息

(3)可选步骤:设置符号路径

(4)设置关联源代码路径

(5)一切就绪,点击“调试托管内存”

(6)查看具体异常原因,定位异常代码位置


找到了具体异常位置之后,就可以着手改bug了。这是一个很简单的空指针异常,但是一个简单的空指针异常却可以引起程序的崩溃,这也说明我们在编码的时候要时刻注意代码的质量,特别是鲁棒性方面,尤其是需要对NULL指针做过滤。
最后,感谢Microsoft提供了这么优秀也这么“重量级"的IDE:

使用VS2013分析DMP文件的更多相关文章
- Windbg分析DMP文件
1.提取Dump格式文件 有两种方式: 第一种,程序崩溃时,启动任务管理器,选择崩溃的*.exe进程,右键选择创建转储文件,通过 开始—运行—输入 %temp% --确定--在打开Temp窗口中即可找 ...
- WinDbg分析DMP文件方法完全攻略
前言:在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试.在开发人员测试出现的bug,我们可以直接在本地进行调试.如果测试人员测试出崩溃级别的bug, ...
- Windows Server2008R2蓝屏,分析dmp文件
使用Windbp PreView打开dmp文件后,在命令栏输入如下命令: !analyze -v 解析结果中蓝色字体为错误原因分析
- 使用 WinDbg 分析dump文件
步骤一: 生成dump文件. #include <Windows.h> #include <iostream> #include <DbgHelp.h> #incl ...
- 【故障处理】IMP-00010错误 12C的dmp文件导入11G
[故障处理]IMP-00010错误 12C的dmp文件导入11G 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...
- WinDbg分析DUMP文件
1. 如何生成dump文件? 原理:通过SetUnhandledExceptionFilter设置捕获dump的入口,然后通过MiniDumpWriteDump生成dump文件: ...
- Windbg抓取程序崩溃的dmp文件的方法
Windbg抓取程序崩溃的dmp文件的方法 一. 简介 windbg是在windows平台下,强大的用户态和内核态调试工具.相比较于Visual Studio,它是一个轻量级的调试工具, ...
- Windows系统上release版本程序bug跟踪解决方案-.dmp文件。
使用场景: Win32程序在release模式下编译完成,发送给最终用户使用时,我们的程序有时候也会出现崩溃的情况,这个时候如果能快速定位崩溃原因或提供一些程序崩溃时的状态信息,对我们解决问题将会带来 ...
- dmp文件自动分析
dmp文件的分析,可以借助各种工具,比如WinDbg, CDB , NTSD,KD等.Windbg提供了窗口接口,而CDB , NTSD是基于命令行的工具,它们都使用了同样的调试引擎Dbgeng.dl ...
随机推荐
- [OPENCV] 第一个程序 识别颜色
它可以鉴别出图像中含有给定颜色的所有像素,该算法输入的是图像以及颜色,并返回表示含有指定颜色的像素的二值图像.该算法还需要指定另外一个参数,即对颜色偏差的容忍度. 实现效果 实现后 #include ...
- CTSC是啥
洛谷看到一题的难度NOI/NOI+/CTSC 百度一下 CTSC (China Team Selection Competition)为国际信息学奥林匹克竞赛(International Olympi ...
- Quartz定时调度框架
Quartz定时调度框架CronTrigger时间配置格式说明 CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年 ...
- 《DSP using MATLAB》示例Example5.22
代码: Nmax = 2048; fft_time = zeros(1, Nmax); for n = 1:1:Nmax x=rand(1,n); t=clock; fft(x); fft_time( ...
- Vue - 内部指令
1.插值 A:<span>TEXT:{{text}}</span> {{text}}会被相应的数据类型text属性值替换,当text值改变时候,文本中的值也会相应的发生变化 B ...
- 转: Delphi的OverRide、OverLoad和Virtual方法
http://blog.csdn.net/ckli/article/details/2201418 override 重写 也叫覆盖 .方法的重写Overriding和重载Overloading是Ja ...
- Angular动画(ng-class)
ng-class 同 触发的是 addClass//当给元素添加一个class时触发, removeClass //把元素的class移除时触发 <ul ng-style="ulWid ...
- XCode6.3上使用opencv教程(MacOSX 10.10)
OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Pyth ...
- 通读SDWebImage③--gif和webP的支持、不同格式图片的处理、方向处理
本文目录 NSData+ImageContentType: 根据NSData获取MIME UIImage+GIF UIImage+WebP UIImage+MultiFormat:根据NSData相应 ...
- UML类图关系--继承(泛化)、实现、关联、聚合、组合、依赖
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composi ...