抛出堆栈溢出异常时在Visual Studio 2010中查看调用堆栈

时间:2010-11-10 20:47:02

标签: visual-studio-2010 stack-overflow

我想在抛出stackoverflow异常时查看调用堆栈。 (即我想指出递归调用导致堆栈溢出的原因)。 调用堆栈被清除,我能看到的只是“外部代码”。

编辑我跟着Chris Schmich的建议(下面的帖子),现在我有一个如下所示的调用堆栈,这只是一个我正在编写的普通控制台应用程序,请注意屏幕截图中没有提到Main() :

alt text

Edit2:我遵循Chris Schmich关于查看不同线程调用堆栈的建议,但是我仍然无法查看我的控制台应用程序的调用堆栈,这是我能看到的:

alt text

2 个答案:

答案 0 :(得分:4)

您看到的[External Code]框架是因为调试器的Just My Code功能。调试器正在隐藏堆栈帧,因为它们不在您的代码中。有关JMC的一些详细信息,请参阅this blog post

您可以通过执行以下操作禁用“我的代码”:

  • 调试»选项和设置...»取消选中“启用我的代码(仅管理)”»»单击“确定”

您现在应该能够看到所有堆栈帧。

对于JMC的一个例子,当我进入一个启用了JMC的简单C#控制台应用程序时,我只看到我的解决方案中的代码......

alt text

...并且在禁用JMC的情况下,我也看到了框架代码......

alt text

答案 1 :(得分:0)

选中此处,加载符号段落 Loading Symbols 它们是* .pdb文件,您需要从microsoft下载它们,以便能够看到外部代码。