在调试模式下,发布版本中缺陷的常见原因不存在

错误和异常程序行为的典型原因是什么,它们仅在释放编译模式下表现出来,但在调试模式下不会发生?


很多时候,在C ++的调试模式下,所有变量都是空初始化的,而除非明确说明,否则在释放模式下不会发生相同的变化。

检查任何调试宏和未初始化的变量

您的程序是否使用线程,然后优化也会在发布模式中导致一些问题。

同时检查所有异常,例如与发布模式没有直接关系,但有时我们忽略了一些重要的异常,例如VC ++中的mem访问冲突,但至少在Linux,Solaris等其他操作系统中可能会出现同样的问题。 理想情况下,您的程序不应该捕获诸如访问NULL指针等重要异常。


常见的陷阱是在ASSERT中使用带有副作用的表达式。


其他差异可能是:

  • 在垃圾收集语言中,收集器通常在发布模式下更积极;
  • 记忆的布局往往可能不同;
  • 内存的初始化可能不同(例如,可以在调试模式下清零,或者在发布时更加积极地重新使用);
  • 当地人可能会被提升为在版本中注册值,这可能会导致浮点值的问题。
  • 链接地址: http://www.djcxy.com/p/80605.html

    上一篇: Common reasons for bugs in release version not present in debug mode

    下一篇: Why are async state machines classes (and not structs) in Roslyn?