仅在发布模式下发生错误

Sen*_*Lee 3 memory debugging visual-studio-2010

我的应用程序仅在发布模式下以某种方式关闭.我甚至看不到调用堆栈.我猜它都以某种方式破碎了.

它在调试模式下工作正常.可能是什么问题?或者我怎样才能弄清问题是什么?

另一个问题是,我想尝试使用未初始化变量的调试模式.我的意思是,据我所知,在调试模式下,所有变量都被正确初始化(这是对的吗?).但不是在发布模式.所以我想尝试没有自动初始化模式的调试模式.这可能吗?

我正在研究VS2010,c ++,directX,Windows 7.谢谢.

Yua*_*uan 5

尝试禁用优化,然后重试

99%的时间是你的一些变量未初始化,请仔细检查.


Sum*_*uma 4

在调试模式下,变量不会被初始化,它们会填充一个值,该值被选择为在使用时给您带来麻烦(非零,高到足以经常导致溢出)并且可识别。

我的应用程序仅在发布模式下以某种方式关闭

您需要首先确定它是什么类型的关闭。它是否崩溃、中止或关闭?将断点放置在所有可能的退出点(包括规则的,如WM_CLOSE)和不规则的,如_abort

如果没有命中断点,至少将调试输出复制到此处,以查看主线程如何终止的信息(什么结果代码或任何可以提供更多信息的内容)。

总结一下调试和发布之间的区别:

  • debug 通过错误值初始化动态分配的变量(这是由调试运行时库完成的,由代码生成/运行时库控制)
  • 调试通过错误值初始化堆栈分配的变量(由代码生成/基本运行时检查 -/RTC选项控制)
  • 优化在调试中关闭(由优化 -/O选项控制)
  • 定义了不同的宏(_DEBUGvs NDEBUG)(由预处理器/预处理器定义控制)

您可以一一调整您的发布模式设置以匹配调试设置,直到“自动关闭”停止。然后你就会知道要寻找什么样的问题。