建设银行住房租赁代表品牌是什么seo是什么姓
qt程序出现程序闪退,对这些未能捕获的异常,存储未Dump文件方便我们定位哪块代码出的问题。利用Window API 的相关接口,具体如下
#include <QCoreApplication>
#include <windows.h>
#include <DbgHelp.h>
#include <QDateTime>
#include <QDir>
#include <QString>// 异常处理函数
LONG WINAPI UnhandledExceptionFilterEx(PEXCEPTION_POINTERS ExceptionInfo) {// 生成唯一的 dump 文件名QString dumpFileName = QDateTime::currentDateTime().toString("yyyyMMddhhmmss") + ".dmp";QString dumpFilePath = QDir::currentPath() + "/" + dumpFileName;// 使用 CreateFileW 创建文件用于保存 dump 文件HANDLE hFile = CreateFileW(dumpFilePath.toStdWString().c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile != INVALID_HANDLE_VALUE) {MINIDUMP_EXCEPTION_INFORMATION ExInfo;ExInfo.ThreadId = GetCurrentThreadId();ExInfo.ExceptionPointers = ExceptionInfo;ExInfo.ClientPointers = FALSE;// 写入 dump 文件MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL);CloseHandle(hFile);}return EXCEPTION_EXECUTE_HANDLER;
}/*******************************************************************
@fn main
@biref 程序主函数入口
@detail 程序主函数入口
@param argc
@param argv
@return int
@Create
******************************************************************/
int main(int argc, char *argv[])
{// 设置异常处理函数SetUnhandledExceptionFilter(UnhandledExceptionFilterEx);QApplication a(argc, argv);return a.exec();
}// 链接 DbgHelp.lib 库
#pragma comment(lib, "DbgHelp.lib")
上边是按照最小dump生成的(MiniDumpNormal),如果需要其他可以调整出入参数类型
typedef enum _MINIDUMP_TYPE {MiniDumpNormal = 0x00000000,MiniDumpWithDataSegs = 0x00000001,MiniDumpWithFullMemory = 0x00000002,MiniDumpWithHandleData = 0x00000004,MiniDumpFilterMemory = 0x00000008,MiniDumpScanMemory = 0x00000010,MiniDumpWithUnloadedModules = 0x00000020,MiniDumpWithIndirectlyReferencedMemory = 0x00000040,MiniDumpFilterModulePaths = 0x00000080,MiniDumpWithProcessThreadData = 0x00000100,MiniDumpWithPrivateReadWriteMemory = 0x00000200,MiniDumpWithoutOptionalData = 0x00000400,MiniDumpWithFullMemoryInfo = 0x00000800,MiniDumpWithThreadInfo = 0x00001000,MiniDumpWithCodeSegs = 0x00002000,MiniDumpWithoutAuxiliaryState = 0x00004000,MiniDumpWithFullAuxiliaryState = 0x00008000,MiniDumpWithPrivateWriteCopyMemory = 0x00010000,MiniDumpIgnoreInaccessibleMemory = 0x00020000,MiniDumpWithTokenInformation = 0x00040000,MiniDumpWithModuleHeaders = 0x00080000,MiniDumpFilterTriage = 0x00100000,MiniDumpWithAvxXStateContext = 0x00200000,MiniDumpWithIptTrace = 0x00400000,MiniDumpScanInaccessiblePartialPages = 0x00800000,MiniDumpFilterWriteCombinedMemory = 0x01000000,MiniDumpValidTypeFlags = 0x01ffffff,
} MINIDUMP_TYPE;