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

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 ansys electronics 2021 R1安装报错,错误代码2,如图
  • ¥30 搭建面包板由NE555N和SN74LS90N组成的计时电路时出了问题
  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同