linux下qt程序如何产生dmp,windows下qt生成及使用dump文件

1. 生成dump文件

LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException){//程式异常捕获

/*

***转储堆栈信息***

*/

//创建 Dump 文件

QString dumpFilename = QString("D:\\VerSysTombs\\") + QDateTime::currentDateTime().toString("yyyyMMddhhmmss") + ".dmp";

HANDLE hDumpFile = CreateFile((LPCWSTR)(dumpFilename.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, (MINIDUMP_TYPE)(MiniDumpWithDataSegs | MiniDumpWithProcessThreadData | MiniDumpWithUnloadedModules), &dumpInfo, NULL, NULL);

}

/*

***保存数据代码***

*/

//这里弹出一个错误对话框并退出程序

EXCEPTION_RECORD* record = pException->ExceptionRecord;

QString errCode(QString::number(record->ExceptionCode,16));

QString errAdr(QString::number((uint)record->ExceptionAddress,16));

FLOGE("Exe Crash And Restart[errcode = %s][erraddr = %s]", errCode.toStdString().c_str(), errAdr.toStdString().c_str());

return EXCEPTION_EXECUTE_HANDLER;

}

main函数中需要调用:

SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数

2. 编译连接需要的头文件

#include

3. .pro文件配置

# 方便生成DUMP调试

LIBS += -lDbgHelp

QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /DEBUG

4. dump文件打开方式

https://jingyan.baidu.com/article/6b1823095425c0ba58e15902.html

5. MiniDumpWriteDump详解

https://blog.csdn.net/supermapping/article/details/50470074

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值