寻木2016 2024-09-11 21:55 采纳率: 0%
浏览 34
已结题

Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)

有Demo,大家帮忙跑一下环境再回答,要是AI回答的就没意义了,想要的是实际解决的

问题遇到的现象和发生背景

qt 6.7.2 ,mingw 64,release模式 设置了一个SetUnhandledExceptionFilter,通过_EXCEPTION_POINTERS把其中的崩溃地址打印出来,得到地址后再通过addr2line -f -C -e app.exe xxxx ,但其中xxxx虽然是_EXCEPTION_POINTERS中的,但得到不是堆栈的信息,是乱的。 之前在5.14时,是可以正常打印出来,6.7.2 流程和方法都一样,但得不到这个堆栈,一个是打印的xxxx地址有问题,一个是6.7.2 有什么需要配置的么,找了一圈,没找到细的,各位大佬有碰过么,指导一下

遇到的现象和发生背景,请写出第一个错误信息

以下是通过addr2line得到的:
??
??:0

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

测试demo:
https://download.csdn.net/download/lmj2006/89740109

运行结果及详细报错内容

以下是通过addr2line得到的:
??
??:0

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

一个是怀疑打印的地址不是真正的地址,但没找到点,一个是配置上有出错。

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

想要达到的结果: demo能跑在release,通过 SetUnhandledExceptionFilter 捕获到填后, 通过addr2line能得到正确的堆栈

  • 写回答

24条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-09-11 21:56
    关注

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    解决方法:设置QTHREAD::UNHANDLEDEXCEPTIONFILTER为NULL

    代码示例:

    #INCLUDE <QCOREAPPLICATION>
    #INCLUDE <QTHREAD>
    
    INT MAIN(INT ARGC, CHAR *ARGV[])
    {
        QCOREAPPLICATION APP(ARGC, ARGV);
        QTHREAD THREAD(&THREAD);
    
        // 设置QTHREAD::UNHANDLEDEXCEPTIONFILTER为NULL
        THREAD.SETUNCAUGHTEXCEPTIONHANDLER(NULL);
    
        RETURN APP.EXEC();
    }
    

    注意:在上述代码中,THREAD被创建为一个QTHREAD对象,并且设置了UNCAUGHTEXCEPTIONHANDLER为NULL。这将阻止所有未处理的中断事件触发。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月12日
  • 修改了问题 9月11日
  • 修改了问题 9月11日
  • 修改了问题 9月11日
  • 展开全部

悬赏问题

  • ¥15 如何构建全国统一的物流管理平台?
  • ¥100 ijkplayer使用AndroidStudio/CMake编译,如何支持 rtsp 直播流?
  • ¥20 和学习数据的传参方式,选择正确的传参方式有关
  • ¥15 这是网络安全里面的poem code
  • ¥15 用js遍历数据并对非空元素添加css样式
  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥30 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路