Debugging 什么';Qt调试版本和Qt发布版本之间的区别是什么?

Debugging 什么';Qt调试版本和Qt发布版本之间的区别是什么?,debugging,qt,version,release,Debugging,Qt,Version,Release,在许多情况下,在调试版本中工作的代码在发布版本中不能正常工作。我总是遇到这些问题,就像地震发生一样。哪个大啤酒能帮助我思考一下???一般来说,如果一个应用程序在调试中工作,而不是在发布中,那是因为一些变量或内存没有正确地设置为初始值 在调试版本中,变量和内存通常设置为零,但在发布版本中,跳过此步骤以节省时间。在对象和分配的内存周围还添加了额外的数据,作为检测内存覆盖的屏障 有时(很少)发布版本中的优化会引入错误调试版本通常更慢、更大、占用更多RAM。它们具有调试符号,使调试变得可能和简单。发布版

在许多情况下,在调试版本中工作的代码在发布版本中不能正常工作。我总是遇到这些问题,就像地震发生一样。哪个大啤酒能帮助我思考一下???

一般来说,如果一个应用程序在调试中工作,而不是在发布中,那是因为一些变量或内存没有正确地设置为初始值

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


有时(很少)发布版本中的优化会引入错误

调试版本通常更慢、更大、占用更多RAM。它们具有调试符号,使调试变得可能和简单。发布版本会删除所有非生产信息。这是一个特定于Qt或任何软件的调试/发布版本的问题吗?真的!可以补充一点,使用valgrind有助于确定这些问题的根源。@FFox太正确了!我在两个月内携带了一个bug(显然是无害的),valgrind发现我的像素阵列溢出是因为错误地实现了一个round函数。@Martin在QT中意外地发现了你的一个msg,但前几天跟踪程序发现了。:)@卡尔菲利普——我仍然没有;t发现了一种可以在windows上工作的valgrind替代方案。在Dr内存中运行Qt应用程序会为每个Qt调用生成警告!