2014-03-28 25 views
1

在VB.net中,我知道您可以使用堆栈跟踪来获取导致异常的函数调用层次结构。在Visual Studio中调试时,如何查看IDE中的函数调用层次结构/堆栈?

不过,我也知道,如果你正在调试并生成异常,您可以直接在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()。

我知道有一种方式,你可以遍历你的方式调用heirarchy。

防爆,呼叫可能是从这里取得:

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

而且通过遍历层次结构,我可以用什么线在这个子程序造成的错误,它会被高亮显示,以及:

DoSomethingFoolish() 

(我不是现在得到这个信息,但我没有在以前的安装)


从那里,我可以看看MaybeDoSomethingFoolish()从哪里调用,等等,直到我达到了各种类型的“起点”,即按钮单击事件或表单加载事件。 (我只希望从我写的代码调用层次结构/堆栈跟踪。)


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

这是我可以改变的地方吗?

我给了Visual Studio的劣质版本吗? (我有VS 2010专业版现在)


我道歉,如果这是一个愚蠢的问题,但是当我试图搜索互联网的答案,所有的我发现了一堆人在谈论这件事情:

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

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

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

+3

它'调试>窗口>调用Stack'或'按Ctrl + L'。 – RBarryYoung

+0

@RBarryYoung啊完美!你应该让这个答案而不是评论,所以我可以接受。这样一个有用的功能,我想知道为什么在调试时没有默认显示。 – Allen

+0

由于异常助手通常用于查看堆栈跟踪。我猜测它在你的机器上停止了工作,但你并没有完全明确地说明这一点。 –

回答

3

要查看当前调用堆栈,同时暂停尝试

Debug> Windows> Call Stack 

或者

Ctrl+L 
+1

Ctrl + L似乎在某些版本的VS中删除了一行代码。小心那个! 虽然菜单选项有效。 – Allen

相关问题