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

然后就会是这个样子

把这张图交给豆包就行

相关推荐
mN9B2uk175 分钟前
在Qt中使用SQLite数据库
数据库·qt·sqlite
Drone_xjw24 分钟前
Qt国际化多语言配置详解-入门到精通
开发语言·qt·命令模式
谁刺我心40 分钟前
[QtCPP]Examples使用示例-QtMultimedia、QMediaPlayer、Audio音频引擎测试mp3播放
qt·音视频·qml
Quz2 小时前
Qt Quick 粒子系统(二):系统控制与生命周期管理
qt·qml·粒子系统
Quz2 小时前
Qt Quick 粒子系统(三):发射器深度解析
qt·qml·粒子系统
San813_LDD18 小时前
[QT]《Qt 开发避坑指南:随机数、容器操作与 VS 环境配置》
开发语言·qt
稷下元歌1 天前
七天学会plc加机器视觉之AI 接入 外设模块开发全详细操作文档(全程配套视频按文档实操)
python·sql·qt·贪心算法·r语言·wpf·时序数据库
艾莉丝努力练剑1 天前
【QT】界面优化:QSS
linux·运维·开发语言·网络·qt·计算机网络·udp
雪的季节1 天前
Qt 自定义表头
开发语言·qt
艾莉丝努力练剑1 天前
【QT】系统相关:QT文件
linux·服务器·开发语言·网络·qt·tcp/ip·计算机网络