QtCreator 运行项目,在debug下正常运行.在release下运行崩溃

首先这种情况大概的原因有

1、有未初始化的变量

2、有野指针(比如没有赋值的指针,析构的时候没有赋空的指针)

3、有函数没有写return(在debug下是会默认补全return的!)

4、析构逻辑顺序错误(我就是这个问题)

但是我怎么也找不到到底什么问题导致崩溃,指针都没有空,函数return感觉也不是问题。

解决方法:

在Release下面让Debug可以断点调试,这个方法只能是手动打断点,但是如果崩溃了是不会跳到具体崩溃的地方的。还是要自己慢慢调。

# release断点调试
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO

最后,通过一步步调,我发现,我的代码在release下崩溃的原因是因为析构顺序的错误。

例如说,我生成A,由A生成B,B在生成C。A是一个弹框,B是一个弹框,C是B的内容。

当B被关闭的时候给A一个关闭信号,让A删除B,然后B析构的时候删除C。就成了上面的析构顺序。

正确的析构逻辑应是B被关闭后,先析构C,再让A析构B。即3-1-2。

所以我把B在窗口关闭时要发送的信号移到了析构里,在删除C后再发送,问题就解决了。


Release和Debug的区别可以看这个

深入了解Debug和Release的区别 - Love简 - 博客园 (cnblogs.com)

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值