在调试模式下,发布版本中缺陷的常见原因不存在
错误和异常程序行为的典型原因是什么,它们仅在释放编译模式下表现出来,但在调试模式下不会发生?
很多时候,在C ++的调试模式下,所有变量都是空初始化的,而除非明确说明,否则在释放模式下不会发生相同的变化。
检查任何调试宏和未初始化的变量
您的程序是否使用线程,然后优化也会在发布模式中导致一些问题。
同时检查所有异常,例如与发布模式没有直接关系,但有时我们忽略了一些重要的异常,例如VC ++中的mem访问冲突,但至少在Linux,Solaris等其他操作系统中可能会出现同样的问题。 理想情况下,您的程序不应该捕获诸如访问NULL指针等重要异常。
常见的陷阱是在ASSERT中使用带有副作用的表达式。
其他差异可能是:
上一篇: Common reasons for bugs in release version not present in debug mode
下一篇: Why are async state machines classes (and not structs) in Roslyn?