2014-03-28 23 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

相關問題