堆栈溢出后,Visual Studio 2008显示完整的堆栈跟踪

时间:2012-08-10 05:53:32

标签: c++ visual-studio stack-overflow

我有一个正在运行的C ++项目,当我在IDE中的调试器下运行它时,它有一个堆栈溢出。

Visual Studio 2008已经采用它来截断溢出线程的堆栈跟踪(嘿,如果我们要这样做,为什么要检查溢出?)。

是否有一些视图选项或调试选项会显示此线程调用的根目录?

所以本质上除了向我提供堆栈跟踪可能被损坏的原因等(我应该禁用我的AV并运行memtest86吗?)是否有人有关于在Visual Studio 2008中截断堆栈跟踪的实际信息吗

2 个答案:

答案 0 :(得分:0)

简单的解决方案是从一开始就保持堆栈足够小,以便更早地发生堆栈溢出。无论如何,你不需要一个兆字节的重复功能。

答案 1 :(得分:0)

如果你想拥有一个大堆栈并且由于一些简单的递归错误而避免堆栈溢出,请使用TLS:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686749(v=vs.85).aspx

在进程启动时分配一个插槽,然后使用TlsGetValue和TlsSetValue递增插槽的值,然后检查是否超出了插槽,然后进入调试器或在您所谓的错误功能中执行其他“暂停”。

如果没有黑客攻击,它将不适用于第三方代码,但它对我来说很有效,可以解决限制问题并且非常轻松。