Ben*_*nny 65 c++ release-mode debug-mode
错误和异常程序行为的典型原因是什么只在发布编译模式中表现出来但在调试模式下不会发生?
Pri*_*lia 31
很多时候,在C++的调试模式下,所有变量都是空的初始化,而除非明确说明,否则在发布模式下不会发生相同的变化.
检查是否有任何调试宏和未初始化的变量
您的程序是否使用线程,然后优化也会在发布模式下导致一些问题.
还要检查所有异常,例如与发布模式没有直接关系,但有时我们会忽略一些关键异常,例如VC++中的mem访问冲突,但至少在Linux,Solaris等其他操作系统中也是如此.理想情况下,您的程序不应该捕获诸如访问NULL指针之类的关键异常.
其他差异可能是:
我曾经被一些错误所困扰,这些错误在Debug版本中很好但在Release版本中崩溃了.有许多根本原因(当然包括那些已经在这个帖子中总结过的原因)并且我已经被以下所有因素所困扰:
#ifdef _DEBUG,因此在调试版本中类是不同的大小.有时#ifndef NDEBUG用于发布版本#ifdef恰好只存在于两个构建中的一个中#pragma pack没有被重置的东西,那么这可能会导致令人讨厌的问题.使用预编译头和强制包含也可能发生类似问题多年来我为积累调试/发布错误而积累的一些技巧: