资料整合于各网友大佬。
debug和release两种编译模式的区别:
1. 使用弹出对话框的方法,确定是哪里出错了,然后再查看问题。此方法是笨方法,适用于新手,可以解决一些问题,但是只能定位,无法像调试一样查看过程中变量的信息。
2. 此外,在实践中发现,通过上述方法会对结果产生影响,为避免此现象发生,换一种方法(在QT下),使用qInstallMessageHandler(myoutput);其中myoutput,是根据qt帮助文档中的例子写的(直接复制过来就能用)然后再需要打印提示信息的地方直接使用即可。具体查看可通过以下设置查看错误信息:
第一是打开项目属性->连接器->系统->子系统->选择控制台;即可在控制台上输出打印信息;
第二是直接在刚才函数后面添加一个文件,以读写和追加方式打开,将调试信息输出到文本文件中。
3. 其实,更好的解决方法是:
设置release版本下的属性,c/c++->优化->已禁用;
连接器调试->生成调试信息改为优化以便于调试,即可像debug一样打断点进行调试了。
经过一番折腾,最后发现是有个指针变量没有赋初值导致的。常见的debug没问题而release出错的情况主要有:
变量未初始化;
数据溢出;
内存分配方式不同引起的问题等。