//必不可少的头文件和lib库文件
#include "dbghelp.h"
#pragma comment(lib,"dbghelp.lib")
//异常捕获函数
LONG WINAPI UnhandledExceptionFunction(struct _EXCEPTION_POINTERS* pExceptionInfo)
{
CTime timeCur = CTime::GetCurrentTime();
//dump文件路径
CString strCrashFilesPath = _T();
HANDLE hDumpFile = CreateFile(strCrashFilesPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
dumpInfo.ExceptionPointers = pExceptionInfo;
dumpInfo.ThreadId = GetCurrentThreadId();
dumpInfo.ClientPointers = TRUE;
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
CloseHandle(hDumpFile);
ExitProcess(0);
return 1;
}
在程序的入口处添加注册函数,比如mfc对话框的APP::InitInstance()中添加注册(如果是纯c++代码,可以在main()中添加注册):
SetUnhandledExceptionFilter(UnhandledExceptionFunction);