【发布时间】:2012-05-21 21:20:02
【问题描述】:
我有一个在嵌入式 Windows XP 机器上运行的 DX9 应用程序。当让它在一夜之间自动进行浸泡测试时,它会在大约六到八小时后崩溃。在我们的开发中。机器(Win 7)我们似乎无法重现此问题。我也相当确定这不是内存泄漏。
- 如果我们在嵌入式机器上的 Debug 中运行相同的应用程序,它不会崩溃。
- 如果我们在嵌入式机器上的主循环更新周围放置
__try/__except,它不会崩溃。
我知道在 Debug 中,本地堆栈周围有一些额外的字节填充,这可能会“隐藏”超出范围的本地数组访问,或者某种未初始化的变量正在潜行。
所以我有两个问题:
-
__try/__except的行为是否类似于调试,即使在发行版中运行? - 如果我们在 Release 模式下发生崩溃,但在 Debug 模式下没有崩溃,我应该扫描哪些代码?
【问题讨论】:
-
“如果我们在发布模式下发生崩溃,但在调试模式下没有崩溃,我应该扫描哪些代码?” - 那是@987654323 @ 或其他有副作用的调试代码
-
首先,没有try/except,有try/catch。其次,您在调试中没有观察到崩溃的原因可能有很多,其中之一是您可能需要运行更长时间。
-
不,我正在使用 __try __except... 它们很相似,但存在潜在差异。但是我不太确定细节。
-
什么样的程序员不确定自己使用的语言特性的细节? (一个坏的)
-
@shoosh:我们在这里讨论的是 C++。大多数程序员并不了解每种语言功能的每一个细节。好人已经学会了如何安全地使用这些功能,这仍然不需要记住每个角落的情况。
标签: c++ crash try-catch buildconfiguration