本文件說明在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),輕鬆地讓您在按兩下即可開始對應用程式進行偵錯,而不需要每次都流覽 [附加至進程] 對話方塊。 請參閱重新附加至進程
偵錯多線程應用程式
分析記憶體
外部程式代碼偵錯
偵錯時,我只能看到用戶程序代碼嗎?
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 架構。