1. exception_handler.h
#pragma once
#include "windows.h"
#include <dbghelp.h>
#include <shellapi.h>
#include <shlobj.h>
#pragma comment( lib, "DbgHelp")
static LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo)
{
HANDLE lhDumpFile = CreateFile(L"DumpFile.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,NULL);
MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo;
loExceptionInfo.ExceptionPointers = ExceptionInfo;
loExceptionInfo.ThreadId = GetCurrentThreadId();
loExceptionInfo.ClientPointers = TRUE;
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),lhDumpFile, MiniDumpNormal, &loExceptionInfo, NULL, NULL);
CloseHandle(lhDumpFile);
::ShellExecuteW(NULL, NULL, L"BugReport.exe", NULL, NULL, SW_NORMAL);
return EXCEPTION_EXECUTE_HANDLER;
}
主程序
#include "stdafx.h"
#include "exception_handler.h"
int _tmain(int argc, _TCHAR* argv[])
{
SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);
return *(int*)0;
}
2) 主程序中包含该头文件, 并在主函数开头调用:
SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);
注意, 该头文件尽量放在最前。 【放在后面编译时可能会出dbghelp.h中的各种错误】
3) 运行。 异常时会生成DumpFile.dmp
4) vs2010。 直接双击dmp文件会在vs2010中显示dump的summary, 右上方的“操作”栏会出现在本机调试字样。 调试即可。
【
dmp、pdb、exe需放在同一目录下】
分享到:
相关推荐
C++ windows工程中 简单生成 dump文件,以便问题定位
qt vs编译器下生成dump文件,方便调试。
利用C++生成Dump文件,以后程序崩溃了,可以找到哪个函数出的问题。非常好用,企业级的应用!
c++ 生成dump文件小程序。dump文件为调试程序的一种文件。
vs2013生成dump文件
文档讲述了如何添加生成dump文件代码,如何配置工程,以及如何分析dump文件。
VS2010 C++程序生成Dump文件例子,非Unicode
windows程序报错生成dump文件,方便找错误原因
VC6.0 C++程序生成Dump文件例子,非Unicode
生成DUMP文件的静态库
windows生成dump文件,分析dump文件排查windows客户端异常
自己封装的生成DUMP文件的库,可以方便对软件的调试...
winXP可以使用Dr.watson生成Dump文件,但是在win7上不存在Dr.watson。要获得Dump文件需要对注册表进行一些修改。该程序将注册表的修改写到了批处理中。
miniDump生成dump文件的开源软件
此库依赖dbghelp.dll, 工程是静态库方式,连接到你的程序中,遇到程序crash时即可生成dump文件,可以使用windbg工具重现重现crash现场。初始化时指定服务器上传程序,则可以轻松获取用户运行时的错误。 使用...
运行有问题的程序,程序产生dump文件后,双击dump文件 ,文件将在vs中打开,双击vs中右边按钮“Debug with Mixed”,dump文件将自动定位到抛出异常的那句代码。具体看代码,很简单的,一清二楚。 (代码开发环境:vs...
DumpTool主要用来在用户机器上对目标进程生成dump文件,定位“卡死”、Crash等问题。 (1)MiniDump: 表示生成一个包含必要信息的dump文件,文件大小约200-500k,具体Flag =MiniDumpNormal|...
本工程是个示例工程,介绍如何在Qt工程配置pro文件,定义生成dump文件按接口,生成Dump文件,介绍可以看https://www.jianshu.com/p/bfcdeae609a4
双击执行批处理文件,程序崩溃后可在D盘生成一个dump文件(可设置)。将文件拷贝到程序生成的目录。再将dump文件拖拽到vs中,点击 “仅限本机调试”即可查看崩溃的调用堆栈信息。 其中DumpCount 表示在制定的目录下...
Windows下Qt生成dump文件并定位bug(基于qBreakpad)-附件资源