qt程序release版在Windows运行崩溃。使用dump文件+vs2022进行解析+豆包

这段代码是全局捕捉崩溃信息,生成crash.dump

复制代码
#include <Windows.h>
#include <DbgHelp.h>#pragma comment(lib,"Dbghelp.lib")LONG WINAPI CrashDumpHandler(_EXCEPTION_POINTERS* pException){    HANDLE hFile = CreateFileA("crash.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);    if(hFile != INVALID_HANDLE_VALUE)    {        MINIDUMP_EXCEPTION_INFORMATION expInfo;        expInfo.ThreadId = GetCurrentThreadId();        expInfo.ExceptionPointers = pException; // 正确:从异常参数拿,不手动调用API        expInfo.ClientPointers = FALSE;        MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &expInfo, nullptr, nullptr);        CloseHandle(hFile);    }    return EXCEPTION_EXECUTE_HANDLER;}// main函数最开头调用int main(int argc, char *argv[]){    SetUnhandledExceptionFilter(CrashDumpHandler); // 全局崩溃钩子    QApplication a(argc, argv);    MainWindow w;    w.show();    return a.exec();}

这短代码放在pro里面,生成pdb符号

javascript 复制代码
CONFIG += debug_and_release
QMAKE_CXXFLAGS_RELEASE += /Zi
QMAKE_LFLAGS_RELEASE += /DEBUG
QMAKE_LFLAGS_RELEASE += /OPT:REF /OPT:ICF

pdb符号表记录了代码及函数,调试的时候,会直接告诉你崩溃的是哪一行,哪个函数

1.双击crash.dump,点击右侧

Debug with Navtive Only

然后就会是这个样子

把这张图交给豆包就行

相关推荐
用户805533698037 小时前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner8 小时前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz5 天前
QML Hello World 入门示例
qt
xcyxiner8 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner9 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner9 天前
DicomViewer (添加模型类)3
qt
xcyxiner10 天前
DicomViewer (目录调整) 2
qt
xcyxiner10 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
桥田智能12 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构
森G12 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt