debug版没有问题而release版本崩溃的解决方法探究

        测试人员提了一个bug,用代码没有重现,找到release版本却重现了,排除不同日期不同版本的问题,在最新代码下调试发现,在debug下没有问题,而在release下回崩溃。对于菜鸟的我来说一脸懵逼,不知所措了,还好有几位大哥指路。

首先,debug是调试版本,release是发布版本,较之前者进行了代码优化,二者区别可参照以下博客了解(很详细):

https://blog.csdn.net/qq_35637562/article/details/78955200

现总结几种常用的调试release版本的方法:

        1. 使用弹出对话框的方法,确定是哪里出错了,然后再查看问题。此方法是笨方法,适用于新手,可以解决一些问题,但是只能定位,无法像调试一样查看过程中变量的信息。

        2. 此外,在实践中发现,通过上述方法会对结果产生影响,为避免此现象发生,换一种方法(在QT下),使用qInstallMessageHandler(myoutput);其中myoutput,是根据qt帮助文档中的例子写的(直接复制过来就能用)然后再需要打印提示信息的地方直接使用即可。具体查看可通过以下设置查看错误信息:

       第一是打开项目属性->连接器->系统->子系统->选择控制台;即可在控制台上输出打印信息;

       第二是直接在刚才函数后面添加一个文件,以读写和追加方式打开,将调试信息输出到文本文件中。

        3. 其实,更好的解决方法是:

        设置release版本下的属性,c/c++->优化->已禁用;

        连接器调试->生成调试信息改为优化以便于调试,即可像debug一样打断点进行调试了。

        经过一番折腾,最后发现是有个指针变量没有赋初值导致的。常见的debug没问题而release出错的情况主要有:

        变量未初始化;

        数据溢出;

        内存分配方式不同引起的问题等。

        具体可参考以下博客内容(很详细):

https://www.cnblogs.com/cwwmmv/p/9151386.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值