2011-05-05 202 views
2

有时候我的应用程序中的某些代码部分损坏了堆栈。但问题只会在一段时间后才能看到。所以我们无法确定问题的确切位置。是否有任何工具可以在破坏堆栈后立即检测C++应用程序中的堆栈损坏?检测到堆栈损坏

是否有任何windbg工具来识别此?

+0

请参阅http://stackoverflow.com/questions/413477/is-there-a-good-valgrind-substitute-for-windows – jlew 2011-05-05 17:02:56

回答

5

编译与/RTCs,它启用堆栈帧运行时错误检查。请参阅/RTC (Run-Time Error Checks)

+0

是否可以在发布版本中使用/ RTC? – Maanu 2011-05-05 17:12:48

+0

@Maanu - 是的,但成本很低。 – 2011-05-05 17:43:02

+0

@Steve Townsend感谢您的帮助 – Maanu 2011-05-06 06:00:12

0

腐败总是发生在同一个地方吗?如果是这样,您可以轻松地使用调试器来设置观察点,以检测该位置的写入操作,并查看谁在执行损坏操作。有时,分析破坏堆栈的数据也可以帮助你 - 例如,如果它是一个字符串,你可能能够缩小正在写入它的代码。

+0

应用程序在不同点崩溃。 – Maanu 2011-05-05 17:01:41