在Visual Studio中进行调试时,如何在IDE中查看函数调用层次结构/堆栈?

时间:2014-03-28 15:12:38

标签: vb.net visual-studio-2010 visual-studio debugging stack

在VB.net中,我知道您可以使用堆栈跟踪来获取导致异常的函数调用层次结构。

但是,我也知道如果您正在调试并生成异常,您可以直接在IDE中查看此信息...(如果您的版本或设置正确?)

请允许我解释一下:

假设我按如下方式编写子程序:

Public Shared Sub DoSomethingFoolish()
    Dim x As integer = 0
    Dim y As integer = 1 / i 'can't do this
End Sub

如果我在调试模式下运行它,那么当执行坏行时,我将收到错误,调试将停止。坏行将突出显示,我可以查看错误是什么(在这种情况下除以零)

这一行将突出显示:

Dim y As integer = 1 / i 'can't do this

(这就是我目前所拥有的)


但是,假设我的程序中有5个位置,我在那里打电话给DoSomethingFoolish()。

我知道有一种方法可以让你在通话中继续前进。

例如,可能是从这里打来的电话:

Public Shared Sub MaybeDoSomethingFoolish()
    If DareIActAFool = True Then
            DoSomethingFoolish()
    End If
End Sub

通过遍历heirarchy,我可以在这个子程序中的哪一行引起错误,并且它也会突出显示:

DoSomethingFoolish()

(我现在没有收到这些信息,但我之前的安装确实如此)


从那里,我可以看看从哪里调来MaybeDoSomethingFoolish()等等,直到我到达了一个“起点”。排序,即按钮单击事件或表单加载事件。 (我只是从我写的代码中寻找调用heirarchy / stack trace。)


我知道有一种方法可以在IDE中查看它,因为我几周前能够做到这一点。我最近在我的工作机器上升级到了Windows 7。我想知道为什么我失去了这种能力。

这是我可以在某处更改的设置吗?

我是否获得了Visual Studio的劣质版本? (我现在有VS 2010专业版)


如果这是一个愚蠢的问题我很抱歉,但当我尝试在互联网上搜索答案时,我发现所有人都在谈论这件事:

Dim ST As New StackTrace()
msgbox(ST.ToString())

这不是我要找的。我可能使用了错误的关键字。

我所指的调试模式允许您查看基本相同的信息,但是在IDE中它并不需要插入任何代码,也不需要我读取堆栈跟踪中的文本信息并在源中手动导航。这是点击。

1 个答案:

答案 0 :(得分:3)

要在暂停时查看当前的调用堆栈,请尝试

Debug> Windows> Call Stack

Ctrl+L