所需要资源下载:
http://download.csdn.net/detail/zwz1984/9800293
一、目录说明
目录下有三个文件夹:Src、Lib、Tool。
Src存放生成dmp文件(崩溃转储文件)所需要的源文件,需要集成到程序源码中的。
Lib存放生成dmp文件的依赖库(dbghelp.dll)。现在的Window系统(Win7以上)都已集成了此库;如果系统中没有,则需要在发布程序时带上此库。
Tool存放定位崩溃的工具(WinDbg)
二、准备工作
1. 安装工具
在Windows上安装WinDbg工具。
2. 设置环境
1)设置调试信息
Release选项编译程序时,默认调试信息为空。我们需要修改配置,设置调试信息。
3. 添加文件
1)加入文件
将Src目录下的DbgHelp.h(高版本VC中默认集成了此文件,可不用加入工程)、MiniDumper.h、MiniDumper.cpp添加到VC工程中。
2)引用文件
在StdAfx.h中,加入如下代码:
#include "MiniDumper.h"
CMiniDumper g_minidump(false);
三、崩溃定位
当程序在执行过程中,产生dmp文件时,可以按如下步骤来定位:
1. 查看dmp文件
dmp文件就在执行程序的同级目录下。文件名以执行程序名加生成时间组成。
2. 打开dmp文件
打开WinDbg,在文件菜单中 ,选择打开崩溃转储文件。
打开文件后,在弹出的窗口中出现如下信息:
3. 定位dmp信息
输入!analyze -v,即可看到调用堆栈信息(红线框所示)及出错代码信息(蓝线框所示)。
四、常见问题
1. 崩溃时不产生dmp文件
1)检查VC环境设置,是否设置了“产生调试信息”。
当未设置“产生调试信息”时,编译程序时将不会生成pdb文件,程序崩溃时也不会产生dmp文件。
2. 使用dmp文件无法定位错误
1)检查VC环境设置,是否设置了“调试信息为空”?
调试信息为空时,可能无法正常定位。
2)本地源码及相关位置是否更新?
dmp文件中可能包含了源码及相关位置信息,更新这些信息后,将会导致无法定位错误。