Qt调试版本和Qt发布版本有什么区别?

4

在很多情况下,调试版本可以正常运行的代码在发布版中却不能正常工作。这让我感到困惑,就像发生了地震一样。哪位大佬能给我一些思路呢?


1
调试版本通常较慢、较大,且占用更多的内存。它们具有调试符号,使得调试变得可能和简单。发布版本剥离了所有非生产信息。 - Blender
这是一个针对Qt还是任何软件的调试/发布版本的特定问题吗? - spraff
1个回答

7

通常情况下,如果一个应用在调试模式下可以运行但是在发布模式下不能运行,那么这很可能是由于某些变量或内存没有被正确地设置为初始值。

在调试版本中,变量和内存通常会被设置为零,但在发布版本中,为了节省时间,这一步骤会被跳过。此外,额外的数据也会被添加到对象和分配的内存周围作为屏障来检测内存覆盖。

有时(非常少见),发布版本中的优化会引入错误。


3
非常正确!还可以补充说,使用Valgrind可以帮助确定此类问题的来源。 - FFox
@FFox 太对了!我携带了一个错误两个月(显然是无害的),而valgrind发现我由于错误实现的round函数而溢出了我的像素数组。 - UmNyobe
@Martin 不小心发现您之前在QT但追踪器上的留言 :) - karlphillip
@Karlphillip - 我还没有找到在Windows上运行的Valgrind替代品。在Dr Memory中运行Qt应用程序会为每个Qt调用产生警告! - Martin Beckett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接