本文件說明在 Visual Studio 中偵錯功能的常見問題。 還會將偵錯工作或問題對應至 Visual Studio 偵錯工具中的相關功能。 這些連結涵蓋工作或問題,例如偵錯多執行緒應用程式、程式碼瀏覽、記憶體流失、檢查變數、使用中斷點、外部程式碼偵錯等等。 如果您需要偵錯工具功能的概觀,請改為參閱偵錯工具簡介。
中斷點
如何暫停執行中的程式碼,以檢查可能包含 Bug 的程式碼?
設定中斷點。 如需詳細資訊,請參閱使用中斷點。
變數是否有非預期的值。 或者,我想要在應用程式達到特定狀態時檢查應用程式嗎?
請嘗試條件式中斷點,以控制使用條件式邏輯啟用中斷點的位置和時機。 以滑鼠右鍵按一下中斷點來新增條件。 當變數等於非預期的值時,請將條件設定為 true。
如需詳細資訊,請參閱中斷點條件。
如何在不需修改或停止程式碼的情況下,在可設定的條件下將資訊記錄至 [輸出] 視窗?
追蹤點可讓您在不需修改或停止程式碼的情況下,在可設定的條件下將資訊記錄至 [輸出] 視窗。
如何知道變數的值何時變更?
對於 C++,請設定資料中斷點。
對於使用 .NET Core 3 的應用程式,您也可以設定資料中斷點。
此外,僅適用於 C# 和 F#,您可以使用條件式中斷點追蹤物件識別碼。
如何只在叫用另一個中斷點時中斷執行?
設定相依中斷點,該中斷點只有在先叫用另一個中斷點時才會中斷執行。 如需詳細資訊,請參閱相依中斷點。
只能叫用中斷點一次嗎?
設定暫時中斷點,讓您只中斷程式碼一次。 如需詳細資訊,請參閱暫時中斷點。
是否可以在特定反覆項目暫停迴圈內的程式碼?
設定相依中斷點,該中斷點只有在先叫用另一個中斷點時才會中斷執行。 如需詳細資訊,請參閱叫用次數。
當我知道函式名稱而不知道函式位置時,如何在函式開頭暫停程式碼?
您可以使用函式中斷點來執行此動作。 如需詳細資訊,請參閱設定函式中斷點。
如何在多個具有相同名稱的函式開頭暫停程式碼?
當您有多個具有相同名稱的函式 (多載函式或不同專案中的函式),您可以使用函式中斷點。
管理及追蹤中斷點
使用 [中斷點] 視窗。 如需詳細資訊,請參閱管理中斷點。
擲回特定已處理或未處理的例外狀況時,暫停程式碼並進行偵錯
雖然例外狀況協助程式會顯示發生錯誤的位置,但如果您想要暫停並偵錯特定錯誤,則可以告知偵錯工具在擲回例外狀況時中斷。
從呼叫堆疊設定中斷點
如果您想要在檢查 [呼叫堆疊] 視窗中的執行流程或檢視函式時暫停和偵錯程式碼,請參閱在 [呼叫堆疊] 視窗中設定中斷點。
在特定組譯碼指令中暫停程式碼
您可以從 [反組譯碼] 視窗設定中斷點來執行此動作。
巡覽程式碼
如何了解偵錯時逐步執行程式碼的命令?
如需詳細資訊,請參閱使用偵錯工具瀏覽程式碼。
是否可以在跳過中斷點時將程式碼執行至特定行,而不移除或停用中斷點?
針對這些案例可以使用 [強制執行至資料指標]。 您可以保留中斷點,偵錯工具會跳過中斷點,直到其到達具有資料指標的程式碼為止。 該工具也會跳過任何可能發生的第一次例外狀況中斷狀況。 如需詳細資訊,請參閱使用偵錯工具瀏覽程式碼。
如果程式碼呼叫不同的方法,我可以逐步執行特定方法嗎?
以滑鼠右鍵按一下程式碼,以顯示可讓您選取 [逐步執行特定] 的操作功能表。 這會顯示您可以逐步執行的所有方法清單。 您現在可以選取感興趣的方法。
檢查和視覺化資料
如何在執行應用程式時檢查變數的值?
使用資料提示將滑鼠停留在變數上方,或在 [自動變數] 和 [區域變數] 視窗中檢查變數。
是否可以觀察特定變數的變更值?
對變數設定監看式。 如需詳細資訊,請參閱對變數設定監看式。
如何檢視太長而無法用於偵錯工具視窗的字串?
[字串視覺化檢視] 會顯示太長而無法用於資料提示或偵錯工具視窗的字串。 它也可以協助您識別格式錯誤的字串。
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? 或者,如何一律載入一個 PDB?
在 [偵錯 > 選項 > 符號] 中設定包含和排除清單。
請參閱指定符號
設定偵錯
如何設定偵錯工具設定?
若要設定偵錯工具選項和偵錯工具專案設定,請參閱偵錯工具設定和準備。
如何自訂偵錯工具中顯示的資訊?
您可能想要將物件類型以外的資訊顯示為不同偵錯工具視窗中的值。 對於 C#、Visual Basic、F# 及 C++/CLI 程式碼,請使用 DebuggerDisplay 屬性。 如需更進階的選項,您也可以建立自訂視覺化檢視來自訂 UI。 對於原生 C++,請使用 NatVis 架構。