Qt开发: 捕获系统异常,产生dmp文件
来源:互联网 发布:java连接sqlserver代码 编辑:程序博客网 时间:2024/09/21 06:19
项目 *.pro里添加
LIBS += -lDbgHelp
main.cpp:
#include "mainWidget.h"
#include "MainForm.h"
#include <QApplication>
#include <QTextCodec>
#include <QDir>
#include <windows.h>
#include <dbghelp.h>
//异常捕获函数
long ApplicationCrashHandler(EXCEPTION_POINTERS *pException){
{
// 在程序exe的上级目录中创建dmp文件夹
QDir *dmp = new QDir;
bool exist = dmp->exists("../dmp/");
if(exist == false)
dmp->mkdir("../dmp/");
}
QDateTime current_date_time = QDateTime::currentDateTime();
QString current_date = current_date_time.toString("yyyy_MM_dd_hh_mm_ss");
QString time = current_date + ".dmp";
EXCEPTION_RECORD *record = pException->ExceptionRecord;
QString errCode(QString::number(record->ExceptionCode, 16));
QString errAddr(QString::number((uint)record->ExceptionAddress, 16));
QString errFlag(QString::number(record->ExceptionFlags, 16));
QString errPara(QString::number(record->NumberParameters, 16));
qDebug()<<"errCode: "<<errCode;
qDebug()<<"errAddr: "<<errAddr;
qDebug()<<"errFlag: "<<errFlag;
qDebug()<<"errPara: "<<errPara;
HANDLE hDumpFile = CreateFile((LPCWSTR)QString("../dmp/" + time).utf16(),
GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hDumpFile != INVALID_HANDLE_VALUE) {
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
dumpInfo.ExceptionPointers = pException;
dumpInfo.ThreadId = GetCurrentThreadId();
dumpInfo.ClientPointers = TRUE;
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
CloseHandle(hDumpFile);
}
else{
qDebug()<<"hDumpFile == null";
}
return EXCEPTION_EXECUTE_HANDLER;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
//注冊异常捕获函数
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);
MainForm mf;
mf.show();
return a.exec();
}
阅读全文
0 0
- Qt开发: 捕获系统异常,产生dmp文件
- 产生DMP文件
- Qt程序捕捉异常,产生dump文件
- Oracle DMP文件异常解决
- 捕获反射调用时产生的异常
- 如何捕获 System.loadLibrary 产生的异常?
- 捕获System.loadLibrary()产生的异常
- 程序异常自动生成DMP文件
- iOS 捕获系统外异常
- 如何捕获系统外异常
- iOS 捕获系统外异常
- Android 捕获系统全局异常
- iOS 捕获系统外异常
- android 异常捕获系统收集
- Android捕获异常,生成文件
- JNI开发之捕获异常
- windows系统exp oracle dmp文件
- C++捕获系统异常(VS2010设置)
- 嵌入式工程师面试题——常见字符串编程小题目
- Git 常用操作介绍
- mysql中索引的分类及简介
- Jquery的简单介绍
- SQL数据类型
- Qt开发: 捕获系统异常,产生dmp文件
- hdu 5919 dfs前序遍历计数 笛卡尔树
- (hdu2588)GCD(欧拉函数)
- 【面经笔记】TCP
- linux 安装nginx
- maven配置文件pom.xml详解
- HDU 6034 Balala Power!【贪心】
- lanqiao 小白算法练习 合并石子 区间dp
- 剑指offer面试题[59]-对称的二叉树