1、 .pro 文件中添加
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /DEBUG //release 版本 生成 pdb 文件
main.cpp 代码 如下
#if defined(Q_OS_WIN32)
//#include
#include "Dbghelp.h"
#pragma comment(lib, "Dbghelp.lib")
//程式异常捕获
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
{
QDateTime tt=QDateTime::currentDateTime();
QString time_str=tt.toString("yyyy-MM-dd_hh_mm_ss");
QString dmpPath = time_str + "_dmp.dmp";
//创建 Dump 文件
HANDLE hDumpFile = CreateFile(dmpPath.toStdWString().c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDumpFile != INVALID_HANDLE_VALUE)
{
//Dump信息
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
dumpInfo.ExceptionPointers = pException;
dumpInfo.ThreadId = GetCurrentThreadId();
dumpInfo.ClientPointers = TRUE;
//写入Dump文件内容
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
}
return EXCEPTION_EXECUTE_HANDLER;
}
#endif
在 main 函数中添加
#if defined(Q_OS_WIN32)
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数 #endif
程序崩溃后生成 .dmp 文件, 可使用 Debug Diagnostic Tool 进行分析