dump文件的使用
2015-08-29 16:50
267 查看
dump文件用于发布版中定位程序出错的位置,在Release版中需要首先进行配置,如下图所示:
示例代码:
最后在发布的程序中运行这个exe,不要在含代码的工程中直接运行(这样看不出效果)
上图中的dmp文件是拷贝过来的,点击这个单独的exe程序,dmp文件会重新生成一个。用VS2008以及以上的版本可以直接运行这个dmp文件,可定位出错位置。
界面右侧,使用 仅限本机 进行调试
这样就定位到了出错的位置。
示例代码:
#include "stdafx.h" #include <windows.h> #include <DbgHelp.h> #pragma comment(lib, "dbghelp.lib") //我们的回调函数 LONG __stdcall ExceptCallBack( EXCEPTION_POINTERS *pExcPointer) { MessageBox(NULL,"程序崩溃!相关信息记录在C:\\Test.dmp文件中。",NULL,MB_OK); //创建dump文件 HANDLE hFile = CreateFile("C:\\Test.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,NULL); //向文件写下当前程序崩溃相关信息 MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo; loExceptionInfo.ExceptionPointers = pExcPointer; loExceptionInfo.ThreadId = GetCurrentThreadId(); loExceptionInfo.ClientPointers = TRUE; MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),hFile, MiniDumpNormal, &loExceptionInfo, NULL, NULL); CloseHandle(hFile); return EXCEPTION_EXECUTE_HANDLER; } void WrongFun() { //crash int * p = NULL; *p = 1; } int _tmain(int argc, _TCHAR* argv[]) { //设置崩溃回调函数 SetUnhandledExceptionFilter(ExceptCallBack); WrongFun(); return 0; }
最后在发布的程序中运行这个exe,不要在含代码的工程中直接运行(这样看不出效果)
上图中的dmp文件是拷贝过来的,点击这个单独的exe程序,dmp文件会重新生成一个。用VS2008以及以上的版本可以直接运行这个dmp文件,可定位出错位置。
界面右侧,使用 仅限本机 进行调试
这样就定位到了出错的位置。
相关文章推荐
- Android主题切换—夜间/白天模式探究
- Java SE入门 Lesson 01
- android 两次点击back键退出程序
- 10种简单的Java性能优化
- jq 属性选择器及子元素过滤选择器
- app上线问题
- 深入理解计算机系统第八章shell实验
- 一个字符串常量实验引发的思考
- 无线安全的一些东西
- 理解ThreadLocal
- shader基础
- Catalan数
- 改变 Flash Recovery Area (FRA)到一个新路径的方法
- [LeetCode] 23 - Merge k Sorted Lists
- 我关注的一周技术动态 2015.08.30
- localhost与127.0.0.1的区别
- 使用Jedis源码生成Jedis.jar
- C++中map、hash_map、unordered_map、unordered_set通俗辨析
- 在Mac上制作树莓派SD镜像
- Intellij IDEA 修改字体