Winows下程序崩溃自动创建Dump文件以方便跟踪问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/r5014/article/details/82734321

首先定义一个默认的异常处理回调函数:

LONG CrashHandler(struct_EXCEPTION_POINTERS* pExceptionInfo)
{

    std::string dumpFileName = "./CrashDump.dump";

	HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL,          
                                  CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

	// Get Dump Info
	MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
	dumpInfo.ExceptionPointers = pExceptionInfo;
	dumpInfo.ThreadId = GetCurrentThreadId();
	dumpInfo.ClientPointers = TRUE;

    // Write Dump
	MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile,         
                      MiniDumpNormal, &dumpInfo, NULL, NULL);
    
    CloseHandle(hDumpFile);
 
    return EXCEPTION_EXECUTE_HANDLER;
}

然后在程序一开始调用API函数来设置这个回调,这样当程序异常崩溃的时候就会在当前目录生成CrashDump.dump文件,方便调试跟踪:

SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CrashHandler);

---------------------------------------

猜你喜欢

转载自blog.csdn.net/r5014/article/details/82734321