有时我的应用程序中的某些代码部分会破坏堆栈。但问题只会在一段时间后才会出现。所以我们无法确定问题的确切位置。是否有任何工具可用于在损坏堆栈后立即检测c ++应用程序中的堆栈损坏?
是否有任何windbg工具可以识别这个?
答案 0 :(得分:6)
使用/RTCs
进行编译,这将启用堆栈帧运行时错误检查。请参阅/RTC (Run-Time Error Checks)。
答案 1 :(得分:0)
腐败总是发生在同一个地方吗?如果是这样,您可以轻松地使用调试器设置观察点以检测该位置的写入并查看谁在进行损坏。有时分析损坏堆栈的数据也可以帮助你 - 例如,如果它是一个字符串,你可能能够缩小写入它的代码。