偵錯是開發者每天花費最多時間的活動之一。熟練掌握 Visual Studio (VS) 偵錯工具,能將「找 Bug」從盲目試錯轉化為精準診斷。本文涵蓋基礎操作、進階技巧、高產能快捷鍵與實戰場景,適用 VS 2010 至最新版本。
| 動作 | 操作 | 快捷鍵 |
|---|---|---|
| 切換斷點 | 程式碼左邊欄點擊 / F9 | F9 |
| 啟動偵錯 | 工具列綠箭頭 / 偵錯→啟動偵錯 | F5 |
| 逐行 (不進函式) | 偵錯→逐行 | F10 |
| 逐行 (進函式) | 偵錯→逐行逐項 | F11 |
| 跳出函式 | 偵錯→跳出 | Shift+F11 |
| 停止偵錯 | 偵錯→停止偵錯 | Shift+F5 |
| 設定下一個執行陳述式 | 右鍵程式碼行→設定下一個陳述式 | Ctrl+Shift+F10 |
a + b、list.Count)。>,支援 IntelliSense。>? variable 或 >Debug.Print variable:印出值。>ClassName.StaticMethod(args):呼叫靜態方法並顯示回傳值。>this.InstanceMethod(args):呼叫實例方法 (需在斷點內)。>new List<int> {1,2,3}:建立物件測試邏輯。滑鼠懸停變數 → 點擊放大鏡圖示,或 Shift+F9,快速評估複雜運算式。
右鍵斷點紅點 → 條件 → 輸入 i == 50、obj != null && obj.Id > 100 等運算式,僅在條件成立時中斷。
右鍵斷點 → 命中計數 → 「中斷於第 N 次」或「每 N 次中斷」,適合迴圈第 N 次迭代觀察。
限制特定執行緒、處理序、機器名稱觸發,解決多執行緒干擾。
右鍵斷點 → 動作 → 輸入訊息 Loop i = {i}, Time = {DateTime.Now},勾選「繼續執行」,輸出至「輸出」視窗,不中斷程式流程。
偵錯中可將黃色執行指標 (指令指標) 上下拖曳,跳過或重跑程式碼段。注意:資料狀態不會回滾,僅改變執行流程。
for (int i = 0; i < 100; i++)
{
if (i == 50) { /* bug 發生處 */ }
}
斷點停在 i == 50 判斷前 → 即時視窗輸入 >i = 49 → F10 單步 → 進入 if 區塊複現 Bug。
catch 捕獲。System.Diagnostics.Debug.Assert(condition):條件失敗時彈出對話框,可選「忽略」繼續、「重試」中斷、「中止」終止。Debug.WriteLine / TraceSource 輸出關鍵狀態至檔案或 DebugView。TraceListener 自動加上時間戳、執行緒 ID、呼叫堆疊。Console.WriteLine,不汙染程式碼。