Qt+mingw程序异常信息捕捉和定位

在遇到qt+mingw编译的程序在客户处异常崩溃且无法复现问题时,通过项目配置修改代码以支持异常搜集,生成汇编信息,并结合crash.log定位异常地址,从而有效定位问题。虽然这种方法会使程序文件增大,但在发布时可剔除.debug文件。
摘要由CSDN通过智能技术生成

程序发布后在客户手中出现异常崩溃,但自己测试又不能复现问题,要是能捕获到异常时相关信息就很好定位问题了。采用qt+msvc编译的程序可以生成.pdb文件和捕捉异常dump文件来进行问题定位,qt+mingw编译的程序可以如下操作:

1. 项目配置

在.pro文件中添加:

QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CFLAGS_RELEASE = $$QMAKE_CLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO

QT5可以不用在pro文件中添加以上代码,直接选择Profile编译,而不是Release编译,效果一样。

2. 修改代码支持异常搜集

#ifdef Q_OS_WIN
long __stdcall   callback(_EXCEPTION_POINTERS*   excp)
{
    CCrashStack crashStack(excp);
    QString sCrashInfo = crashStack.GetExceptionInfo();

    TCHAR my_documents[MAX_PATH];
    SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, SHGFP_TYPE_CURRENT, my_documents);
    QString file_path = QString::fromWCharArray(my_documents);

    QDir *folder_path = new QDir;
    bool exist = folder_
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值