Qt下使用DbgHelp和SetUnhandledExceptionFilter来获取Crash log/dump文件
来源:互联网 发布:分布式系统 云计算 编辑:程序博客网 时间:2024/05/20 07:52
第一步:在pro中链接Lib
LIBS += -lDbgHelp
第二步:在main源文件中添加
#include <windows.h>
第三步:在main源文件中创建回调函数:
LONG CreateCrashHandler(EXCEPTION_POINTERS *pException){ //创建 Dump 文件 QDateTime CurDTime = QDateTime::currentDateTime(); QString current_date = CurDTime.toString("yyyy_MM_dd_hh_mm_ss"); //dmp文件的命名 QString dumpText = "Dump_"+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)); HANDLE DumpHandle = CreateFile((LPCWSTR)dumpText.utf16(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(DumpHandle != INVALID_HANDLE_VALUE) { MINIDUMP_EXCEPTION_INFORMATION dumpInfo; dumpInfo.ExceptionPointers = pException; dumpInfo.ThreadId = GetCurrentThreadId(); dumpInfo.ClientPointers = TRUE; //将dump信息写入dmp文件 MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),DumpHandle, MiniDumpNormal, &dumpInfo, NULL, NULL); CloseHandle(DumpHandle); } //创建消息提示 QMessageBox::warning(NULL,"Dump",QString("ErrorCode%1 ErrorAddr:%2 ErrorFlag:%3 ErrorPara:%4").arg(errCode).arg(errAddr).arg(errFlag).arg(errPara), QMessageBox::Ok); return EXCEPTION_EXECUTE_HANDLER;}
第四步:在main函数中添加注册dump回调函数
int main(int argc, char *argv[]){ QApplication a(argc, argv); //获取系统编码 QTextCodec *codec = QTextCodec::codecForLocale(); QTextCodec::setCodecForLocale(QTextCodec::codecForLocale()); //注冊异常捕获函数 SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CreateCrashHandler); /***代码实现***/}
这样就可以实现crashlog的保持和警告窗口提示。
阅读全文
0 0
- Qt下使用DbgHelp和SetUnhandledExceptionFilter来获取Crash log/dump文件
- 使用dbghelp生成dump文件以及事后调试分析
- 使用dbghelp生成dump文件以及事后调试分析
- Android dump .so 文件crash log
- 利用SetUnhandledExceptionFilter获取程序异常时的DUMP文件
- 利用SetUnhandledExceptionFilter获取程序异常时的DUMP文件
- 使用SetUnhandledExceptionFilter和DebugMiniDumpFilter来使程序在崩溃时生成dump文件
- 使用SetUnhandledExceptionFilter和DebugMiniDumpFilter来使程序在崩溃时生成dump文件 .
- Qt下MSVC/Mingw平台dump/crash log报告调试方法差异
- Android dump .so 文件crash log(不太明白 转载过来以便需要的时候使用)
- 使用dbghelp获取调用堆栈--release下的调试方法
- 使用dbghelp获取调用堆栈--release下的调试方法
- Linux crash dump文件生成与使用
- Linux crash dump文件生成与使用
- 使用 Crash 工具分析 Linux dump 文件
- 使用 Crash 工具分析 Linux dump 文件
- 使用 Crash 工具分析 Linux dump 文件
- 使用 Crash 工具分析 Linux dump 文件
- django ManyToMany 使用的注意事项
- Java学习 其他笔记
- 接口练习:大学里的学生(Student)需要交学费,而研究生(Graduate)作为学生比较特殊,除了需要交学费外,还可以获取一部分科研津贴,由学校(University)统一发放。此外,学校还需要发
- P2985 [USACO10FEB]吃巧克力
- Python高级编程--如何实现可迭代对象和迭代器对象?(未完待续)
- Qt下使用DbgHelp和SetUnhandledExceptionFilter来获取Crash log/dump文件
- Atcoder arc 084 D
- centOs7 忘记root密码
- 如何删除strut2校验后<s:fielderror>在jsp页面输出时的小黑点和自动换行?
- 自我总结的HTML
- TankWar游戏(图片版)----阶段四
- [leetcode]312. Burst Balloons
- [Oracle 11g r2(11.2.0.4.0)]Oracle Golden Gate Training-workshop5
- Python高级编程-如何实现反向迭代?