Windows Error Reporting保存Crash Dump文件

1、Crash Dump文件

Crash Dump后缀名为:.dmp文件是进程的内存镜像,可以把程序运行时的状态完整的保存下来,是调试异常程序重要的方法,所以程序崩溃时,除了日志文件,dump文件便成了我们查找错误的最后一根救命的稻草。

 

2、Windows中使用Windows Error Reporting保存Crash Dump文件

产生Crash Dump文件的方法不止这一种,这里我介绍这种使用Windows Error Reporting(以下简称WER) 的方法。

相较于其他方法WER的优势在于:

1.Windows Server 2008以后,WER就加入了Windows中,我们现在的系统不需要再安装什么软件,仅仅只需要设置一下配置文件,然后启动服务便可以捕获Crash Dump文件了。

2.和使用其他工具的方式来比较,WER不会影响性能,这使得我们在生产环境上也可以随意打开这项服务,并且毫无副作用。

 

3、配置Windows Error Reporting

a) 设置WER

WER的配置项在注册表中。

1、打开regedit(注册表编辑器)

2、找到下面这个项

HKEY_LOCAL_MACHINE\SOFTWARE

\Microsoft\Windows\Windows Error Reporting\LocalDumps

3、在他下面创建一个项,名字为你要检测的程序名。

此项中需要4个值配置

:DumpFolder, 类型:REG_EXPAND_SZ - 顾名思义,就是存储dump的位置

:DumpCount, 类型:REG_DWORD - 最大保留的dump个数,默认为10.

:DumpType, 类型:REG_DWORD - Dump类型,0:Custom dump, 1: Mini dump, 2: Full dump. 默认值为1

:CustomDumpFlags, 类型:REG_DWORD - 没怎么用,暂时不解释。

b)启动Windows Error Reporting Server服务

服务启动后如果相应程序出现了崩溃的情况,WER就会自动将Crash Dump保存到指定的目录

4、打开Dump文件

Vs2008pdbdmp文件放在一起,用vs2008打开dmp文件调试即可,程序会停到程序崩溃的点。

 

Vs2015直接打开pdb,在右侧有一个设置符号路径的选项,设置pdb的路径之后再调试程序也会停到崩溃的地方。

 

 

需要注意的点:

1.dmp文件和pdb的对应是非常严格的,不同版本的pdbdmp文件肯定是对应不上的,因此在向客户发包的同时,应当完整的保存pdb文件,以便在出现问题时好查找。

2.Windows Error Reporting Server服务每当触发一次dump,就会变成非启动状态,因此在设置此服务时,应当设置启动类型为自动。

3.在配置WER时,需要注意的是Count大小的设置,如果dmp文件个数超过Count的个数,会进行滚动覆盖,即新的dmp会覆盖旧的dmp

猜你喜欢

转载自blog.csdn.net/maybe______/article/details/79740190