常見問題 - 調試程式功能尋找工具

本文件說明在Visual Studio中偵錯功能的常見問題。 它也會將偵錯工作或問題對應至Visual Studio調試程式中的相關功能。 這些鏈接涵蓋工作或問題,例如偵錯多線程應用程式、程式代碼瀏覽、記憶體流失、檢查變數、使用斷點、外部程式碼偵錯等等。 如果您需要調試程式功能的概觀,請參閱 先查看調試程式

斷點

  • 如何暫停執行中的程序代碼,以檢查可能包含 Bug 的程式代碼行?

    設定斷點。 如需詳細資訊,請參閱 使用正確的斷點類型開始使用斷點

  • 如何根據特定準則暫停執行程序代碼?

    設定正確的斷點類型。 如需詳細資訊,請參閱 使用正確的斷點類型

  • 如何在可設定的情況下,將資訊記錄至 [輸出] 視窗,而不需修改或停止我的程序代碼?

    追蹤點可讓您在不修改或停止程式代碼的情況下,在可設定的條件下將信息記錄至 [輸出] 視窗。 如需詳細資訊,請參閱 在Visual Studio調試程式中使用追蹤點

  • 管理及追蹤我的斷點

    使用 [斷點] 視窗。 如需詳細資訊,請參閱 管理斷點

  • 在擲回特定已處理或未處理的例外狀況時暫停程式碼並進行偵錯

    雖然例外狀況協助程式會顯示發生錯誤的位置,但如果您想要暫停並偵錯特定錯誤,您可以 告訴調試程式在擲回例外狀況時中斷

  • 從呼叫堆疊設定斷點

    如果您要在檢查執行流程或檢視 呼叫堆疊 視窗中的函式時暫停和偵錯程式代碼,請參閱 在 [呼叫堆棧] 視窗中設定斷點

  • 在特定元件指令 暫停程序代碼

    您可以從 [反組譯碼] 視窗設定斷點,來執行此動作。

瀏覽程式代碼

  • 如何了解在偵錯時逐步執行程式碼的命令?

    如需詳細資訊,請參閱 使用除錯程式巡覽程式代碼

  • 在略過斷點時,是否可以將程式代碼執行至特定行,而不移除或停用它們?

    您可以針對這些案例使用「強制執行至數據指標」。 您可以保留斷點,而且調試程式會略過斷點,直到它到達具有游標的程式代碼行為止。 它也會略過任何可能發生的第一次例外狀況中斷狀況。 如需詳細資訊,請參閱 使用除錯程式巡覽程式代碼

  • 如果我的程式代碼行呼叫不同的方法,我可以逐步執行特定方法嗎?

    以滑鼠右鍵按下程式代碼行,以顯示可讓您選取 [逐步執行特定] 的操作功能表。 這會顯示您可以逐步執行的所有方法清單。 您現在可以選取感興趣的方法。

檢查和視覺化數據

  • 如何在執行應用程式時檢查變數的值?

    使用 資料提示將滑鼠停留在變數上方,檢查 [自動變數] 和 [局部變數] 視窗中的變數

  • 我是否可以觀察特定變數的變更值?

    在變數上設定監看式。 如需詳細資訊,請參閱 設定變數的監看式。

  • 如何檢視調試程序視窗太長字串?

    字串可視化檢視會顯示資料提示或調試程式視窗太長字串。 它也可以協助您識別格式不正確的字串。
    Visual Studio 中的內建 字串可視化檢視 包含 Text、XML、HTML 和 JSON 選項。

  • 如何檢視大型集合物件?

    DataSet 可視化檢視可讓您檢視 DataSet、DataTable、DataView 或 DataViewManager 的內容。 IEnumerable 視覺化檢視可讓您檢視數位、清單等物件。如需詳細資訊,請參閱 表格式可視化檢視。

偵錯已執行的應用程式

  • 如何偵錯本機或遠端電腦上執行的應用程式、同時偵錯多個進程、偵錯未在 Visual Studio 中建立的應用程式,或偵錯未從 Visual Studio 啟動的任何應用程式?

    請參閱 附加至執行中的行程

  • 如何重複附加至相同的應用程式?

    您可以使用 重新附加至進程Shift+Alt+P),輕鬆地讓您在按兩下即可開始對應用程式進行偵錯,而不需要每次都流覽 [附加至進程] 對話方塊。 請參閱重新附加至進程

偵錯多線程應用程式

  • 如何偵錯多線程應用程式? 或者,我的應用程式是否處於無響應狀態?

    請參閱 平行堆疊視窗 進一步疑難解答

  • 如何檢視呼叫函式的順序?

    請參閱 如何檢視呼叫堆疊

分析記憶體

  • 我的應用程式是否有記憶體流失?

    擷取快照集並使用記憶體工具加以開啟,以進一步進行疑難解答。 請參閱 測量記憶體使用量

  • 如何分析原生或受控應用程式的記憶體使用量?

    透過即時偵錯、堆積傾印或效能分析工具,使用Visual Studio記憶體工具。
    請參閱 選擇記憶體分析工具

  • 如何分析原生或受控應用程式的記憶體使用量,而不附加調試程式? 使用已啟用記憶體使用量工具的Visual Studio效能分析工具。
    請參閱 分析記憶體使用量

  • 是否可以比較兩個時間點之間的記憶體使用量?

    比較記憶體工具中的快照集,或使用差異功能比較兩個堆積傾印。 請參閱 分析記憶體使用量

外部程式代碼偵錯

  • 偵錯時,我只能看到用戶程序代碼嗎?

    Just My Code 是 Visual Studio 偵錯功能,可自動逐步執行系統、架構和其他非使用者程式代碼呼叫。 在 [呼叫堆棧] 視窗中,Just My Code 會將這些呼叫折迭成 [外部程序代碼] 框架。 請參閱僅使用 Just My Code 對使用者程式代碼進行偵錯

  • 如何檢視或偵錯程式執行的原始元件指示?

    使用偵錯 > Windows > 反組譯碼的反組譯碼視窗。 您可以一次逐步執行一個指令,甚至設定個別元件指令的斷點。

  • 我可以看到 .NET 連結庫的原始程式碼嗎?

    從 [偵錯] > [選項] > [符號] 啟用Microsoft符號伺服器,以下載 .NET 連結庫的符號和來源。 請參閱 指定符號

  • 如何從特定或共用位置或伺服器載入 PDB?

    從 [偵錯] > [選項] > [符號] 設定您的符號伺服器。 請參閱 指定符號

  • 如何永遠無法載入特定的 PDB? 或者,如何一律載入一個?

    在偵錯 > 選項 > 符號中設定包含和排除清單。
    請參閱 指定符號

設定偵錯

  • 如何設定調試程序設定?

    若要設定除錯程式選項和除錯程式項目設定,請參閱 除錯程式設定和準備

  • 如何自定義調試程式中顯示的資訊?

    您可能想要將物件類型以外的信息顯示為不同調試程式視窗中的值。 針對 C#、Visual Basic、F#和 C++/CLI 程式代碼,請使用 DebuggerDisplay 屬性。 如需更進階的選項,您也可以建立 自定義可視化檢視來自定義UI。 針對原生C++,請使用 NatVis 架構

其他工作

  • 我需要儲存傾印嗎?

    在偵錯期間於錯誤或斷點停止時,請選取 [偵錯] > [將傾印另存成]選取 [偵錯]。 請參閱 傾印檔案

  • 如何分析傾印檔案?

    選擇 [在 Visual Studio 中開啟檔案] > [開啟],以開啟傾印。 若要開始偵錯,請選取 [使用 Managed Only進行偵錯]、[僅原生偵錯][使用混合偵錯] 或 [使用 Managed Memory 偵錯]。 請參閱 傾印檔案

  • 我可以在偵錯會話期間編輯程序代碼嗎?

    使用 編輯並繼續。 針對 XAML,請使用 XAML 熱重載

  • 如何在遠端電腦上偵錯?

    請參閱 遠端偵錯

  • 如何修正效能問題?

    請參閱 第一次查看分析工具

  • 如何修正例外狀況?

    請參閱 修正例外狀況