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

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

斷點

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

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

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

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

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

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

  • 管理與監控我的斷點

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

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

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

  • 從呼叫堆疊設定斷點

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

  • 在特定的組合語言指令處 暫停程序代碼

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

瀏覽程式代碼

  • 我如何學習在偵錯時逐步執行程式碼的指令?

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

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

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

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

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

檢查和視覺化數據

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

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

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

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

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

    字串可視化工具顯示那些因為過長而無法在資料提示或除錯器視窗中顯示的字串。 它也可以協助您識別格式不正確的字串。
    Visual Studio內建的 string visualizer 包含文字、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 屬性。 如需更進階的選項,您也可以建立自訂視覺化工具來自訂用戶介面。 針對原生C++,請使用 NatVis 架構

其他工作

  • 我需要儲存轉儲嗎?

    在偵錯期間於錯誤或斷點停止時,請選取 [偵錯] > [另存轉儲檔案]。 請參見 Dump 檔案

  • 如何分析轉儲檔案?

    在Visual Studio中選擇File > Open開啟該備份。 若要開始偵錯,請選取 [使用 Managed Only進行偵錯]、[僅原生偵錯][使用混合偵錯] 或 [使用 Managed Memory 偵錯]。 請參見 Dump 檔案

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

    使用Hot Reload,此功能之前稱為「編輯與繼續」。 XAML 的話,請使用 XAML Hot Reload

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

    請參閱 遠端偵錯

  • 如何修正效能問題?

    請參考 初步了解這些分析工具

  • 如何修正例外狀況?

    請參閱 修正例外狀況

AI 輔助除錯

  • 我在除錯時要怎麼獲得 AI 協助?

    如果你有 Copilot,可以在除錯器視窗(如例外輔助、資料提示和變數視窗)中找到 Analyze with CopilotAsk Copilot 按鈕。 Copilot 已經知道你的除錯上下文了。 請參考 Debug with Copilot

  • 我該如何使用除錯代理程式來進行端對端的錯誤解決?

    除錯代理提供具代理功能的工作流程,重現錯誤、檢測你的應用程式,並利用即時執行時資料驗證修復。 從Copilot Chat視窗的模式下拉選單選擇Debugger,並提供問題連結或描述錯誤。 請參見 使用 Debugger Agent 解決 Agentic 錯誤