在偵錯工具中檢視呼叫堆疊和使用 [呼叫堆疊] 視窗

您可以使用 [呼叫堆疊] 視窗來檢視目前堆疊上的函式或程序呼叫。 [呼叫堆疊] 視窗會顯示方法和函式的呼叫順序。 呼叫堆疊是檢查並了解應用程式執行流程的好方法。

當部分呼叫堆疊無法使用偵錯符號時,[呼叫堆疊] 視窗就無法顯示該呼叫堆疊部分呼叫堆疊的正確資訊,改為顯示:

[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]

注意

根據您目前使用的設定或版本,您所看到的對話方塊與功能表命令可能會與此處所描述的不同。 若要變更設定,請選取 [工具] 功能表上的 [匯入和匯出設定]。 請參閱重設所有設定。 [呼叫堆疊] 視窗類似於某些 IDE (例如 Eclipse) 中的 [偵錯] 檢視方塊。

在偵錯工具中檢視呼叫堆疊

偵錯時,在偵錯功能表中,選取視窗>呼叫堆疊,或按ctrl+alt+C

Screenshot showing the Call Stack Window. 執行指標目前所在的堆疊框架位置會以黃色箭頭識別。 根據預設,此堆疊框架的資訊會出現在來源、[區域變數]、[自動變數]、[監看式] 和 [反組譯碼] 視窗中。 若要將偵錯工具內容變更為堆疊上的另一個框架,請切換至另一個堆疊框架

Screenshot showing the Call Stack Window.

執行指標目前所在的堆疊框架位置會以黃色箭頭識別。 根據預設,此堆疊框架的資訊會出現在來源、[區域變數]、[自動變數]、[監看式] 和 [反組譯碼] 視窗中。 若要將偵錯工具內容變更為堆疊上的另一個框架,請切換至另一個堆疊框架

您也可以在偵錯時檢視呼叫堆疊中的例外狀況堆疊框架。 如需詳細資訊,請參閱 在例外狀況協助程式中檢視呼叫堆疊

在呼叫堆疊視窗中顯示非使用者程式碼

若要顯示外部或非使用者程式碼,請切換 [顯示外部程式碼] 並以滑鼠右鍵按一下 [呼叫堆疊] 視窗,然後選取 [顯示外部程式碼]

若要顯示外部或非使用者程式碼,請從呼叫堆疊工具列切換 [顯示外部程式碼] 按鈕,或以滑鼠右鍵按一下 [呼叫堆疊] 視窗,然後選取 [顯示外部程式碼]

非使用者程式碼是啟用 [Just My Code] 時未顯示的任何程式碼。 在受控程式碼中,預設會隱藏非使用者程式碼框架。 下列標記法會出現來取代非使用者程式碼框架:

[<External Code>]

切換至另一個堆疊框架 (變更偵錯工具內容)

  1. 在 [呼叫堆疊] 視窗中,以滑鼠右鍵按一下想要檢視其程式碼和資料的堆疊框架。

    或者,您可以在 [呼叫堆疊] 視窗中按兩下框架,切換至該框架。

  2. 選取 [切換至框架]

    在您選取的堆疊框架旁邊會出現尾端彎曲的綠色箭號。 執行指標會留在原來的框架中,並仍以黃色箭頭標示。 如果您從 [偵錯] 功能表中選取 [逐步執行] 或 [繼續],則會從原本框架而非選取的框架繼續執行。

切換 View all threads 按鈕,以檢視 Parallel Stack 視窗中的所有相關執行緒。

您可以在位於呼叫堆疊視窗左上角的搜尋方塊中輸入相關的搜尋字詞,以搜尋相關的呼叫堆疊框架。 相關的呼叫堆疊框架將會醒目提示。

檢視呼叫堆疊上的函式的原始程式碼

在 [呼叫堆疊] 視窗,以滑鼠右鍵按一下您要查看原始程式碼的函式,然後選取 [移至原始程式碼]

從 [呼叫堆疊] 視窗執行至特定函式

在 [呼叫堆疊] 視窗中,選取函式、按一下滑鼠右鍵,然後選擇 [執行至游標處]

在函式呼叫的結束點設定中斷點

請參閱在呼叫堆疊函式設定中斷點

顯示與另一個執行緒之間的往來呼叫

以滑鼠右鍵按一下 [呼叫堆疊] 視窗,然後選取 [包含至/從其他執行緒的呼叫]

以視覺化方式追蹤呼叫堆疊

(僅限) 在 Visual Studio Enterprise 中,您可以在偵錯時檢視呼叫堆疊的 Code Map。

在 [呼叫堆疊] 視窗中,開啟捷徑功能表。 選擇 [在 Code Map 上顯示呼叫堆疊] (Ctrl + Shift + `)。

如需詳細資訊,請參閱在偵錯時於呼叫堆疊上對應方法

Show Call Stack on Code Map

檢視呼叫堆疊上函式的反組譯程式碼 (C#、C++、Visual Basic、F#)

在 [呼叫堆疊] 視窗中,以滑鼠右鍵按一下您要查看反組譯程式碼的函式,然後選取 [移至反組譯碼]

變更所顯示的選擇性資訊

呼叫堆疊視窗中按一下滑鼠右鍵,並設定或清除 顯示<您想要的資訊>

自動反編譯 .NET 外部程式碼

從 Visual Studio 2022 17.7 版開始,您可以在 Call Stack 視窗中按兩下外部程式碼,自動反編譯 .NET 程式碼。 如需詳細資訊,請參閱偵錯時從 .NET 元件產生原始程式碼。

載入模組的符號 (C#、C++、Visual Basic、F#)

在 [呼叫堆疊] 視窗中,您可以載入目前尚未載入符號之程式碼的偵錯符號。 這些符號可能是從 Microsoft 公用符號伺服器下載的 .NET 或系統符號,或是您所偵錯之電腦上符號路徑中的符號。

請參閱指定符號 (.pdb) 和原始程式檔

若要載入符號

  1. 在 [呼叫堆疊] 視窗中,以滑鼠右鍵按一下未載入符號的堆疊框架。 該框架隨即變成暗灰色。

  2. 指向 [載入符號],然後選取 [Microsoft 符號伺服器] (可用的話),或瀏覽至符號路徑。

若要設定符號路徑

  1. 在 [呼叫堆疊] 視窗中,從捷徑功能表選擇 [符號設定]

    [選項] 對話方塊隨即開啟,並顯示 [符號] 頁面。

  2. 選取 [符號設定]

  3. 在 [選項] 對話方塊中,按一下資料夾圖示。

    游標隨即出現在 [符號檔 (.pdb) 位置] 方塊中。

  4. 輸入您要偵錯之電腦上符號位置的目錄路徑名稱。 對於本機和遠端偵錯,這是本機電腦上的路徑。

  5. 選取 [確定] 以關閉 [選項] 對話方塊。