【发布时间】:2012-08-10 05:53:32
【问题描述】:
我有一个正在运行的 C++ 项目,当我在 IDE 中的调试器下运行它时发生堆栈溢出。
Visual Studio 2008 已自行截断溢出线程的堆栈跟踪(好吧,如果我们要这样做,为什么还要检查溢出?)。
是否有一些查看选项或调试选项可以显示该线程调用的根?
所以本质上,除了向我提供堆栈跟踪可能被破坏的原因等(我是否应该禁用我的 AV 并同时运行 memtest86 ?)有没有人有关于在 Visual Studio 2008 中截断堆栈跟踪的实际信息?
【问题讨论】:
-
也许当你溢出堆栈时,你覆盖了一些重要的东西,所以调试器根本无法再追溯堆栈。
-
我同意这种损坏可能会发生,但是堆栈溢出的全部意义在于在我们丢失某些东西之前停止执行。不仅如此,无论堆栈中可能有什么垃圾,它仍然存在于内存中。
-
检查所有记忆功能和循环..
-
调试器是你的朋友!在崩溃之前添加一个断点,然后逐步检查您的代码,直到它发生。这很乏味并且可能需要很多时间,但可能是必要的。除非你当然找到你经过的地方,例如指向局部变量的指针或覆盖数组等。
-
“但是堆栈溢出的全部意义在于在我们丢失某些东西之前停止执行” -> 我不认为调试器是这样工作的
标签: c++ visual-studio stack-overflow