練習:設定中斷點
中斷點會在偵錯程序暫停執行期間使用。 這可讓您追蹤變數,並檢查執行程式碼的順序。 中斷點是啟動偵錯程序的絕佳方式。
設定中斷點
稍早在本課程模組中,您已完成在調試程式中執行應用程式的練習。 應用程式會在 [偵錯控制台] 面板中顯示「問候訊息」。 練習結束時,您注意到程式代碼會以非預期的方式重複 Andrew 的問候語。
在此練習中,您將使用中斷點來協助您識別問題。
請確定您的Program.cs檔案包含下列程式代碼範例:
/* This code uses a names array and corresponding methods to display greeting messages */ string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" }; string messageText = ""; foreach (string name in names) { if (name == "Sophia") messageText = SophiaMessage(); else if (name == "Andrew") messageText = AndrewMessage(); else if (name == "AllGreetings") messageText = SophiaMessage(); messageText = messageText + "\n\r" + AndrewMessage(); Console.WriteLine(messageText + "\n\r"); } bool pauseCode = true; while (pauseCode == true); static string SophiaMessage() { return "Hello, my name is Sophia."; } static string AndrewMessage() { return "Hi, my name is Andrew. Good to meet you."; }使用 Visual Studio Code 調試程式工具,在迴圈內的第一個程式代碼行上
foreach設定斷點。
小提示
切換 (開/關) 中斷點的一個簡單選項是,選取 (按一下滑鼠左鍵) 行號左邊的區域。 您也可以使用
Run功能表和鍵盤快捷方式來設定斷點。在 [ 執行] 功能表上,選取 [ 開始偵錯]。
請注意,程式代碼執行會在斷點暫停,而且目前的程式代碼行會在編輯器中反白顯示。

在 [偵錯控制項] 工具列上,選取 [逐步執行]。
您可以將滑鼠指標停留在 [ 偵錯] 控制項 工具列上的按鈕上,以顯示按鈕標籤。
請注意,程式代碼執行會前進到下列程式代碼行並暫停:
messageText = SophiaMessage();此程式代碼列會將 方法的
SophiaMessage傳回值指派給字串變數messageText。請稍作思考為何選取 Step Into 會產生此結果。
- [逐步執行] 按鈕可用來前進到下一個可執行檔陳述式。
- 由於在
names陣列中的第一個元素是Sophia,而且if語句正在比較名稱Sophia,因此表達式會評估為true,然後程式碼執行會進入if語句的代碼區塊。
在 [偵錯控制項] 工具列上,選取 [逐步執行]。
請注意,程式代碼執行會前進到
SophiaMessage方法並暫停。[逐步執行] 按鈕已前進到下一個可執行檔程式碼行。 下一個可執行的程式代碼行不是檔案中的下一行號碼,它是執行路徑中的下一個語句。 在此情況下,下一個可執行語句是 方法的
SophiaMessage進入點。在 [ 偵錯控件] 工具列上,選取 [ 跳出]。
注意,程式碼執行會回到呼叫
SophiaMessage方法的那一行程式碼,然後暫停。請花點時間考慮為何選取 [跳出 ] 會產生此結果。
在方法內時, [跳出 ] 按鈕會完成目前方法的其餘行,然後返回叫用方法的執行內容。
在 [偵錯控制項] 工具列上,選取 [逐步執行]。
請注意,程式代碼執行會前進到下列程式代碼行並暫停:
messageText = messageText + "\n\r" + AndrewMessage();請花點時間考慮為何執行進階至此程式代碼行。
雖然程式代碼縮排表示此程式代碼行是語句程式代碼區塊
else if的一部分,但不是。 使用大括弧{}來定義此if - else if結構的代碼區塊,可以幫助避免這個錯誤。 撰寫程式代碼時,每次迴圈反覆執行時,都會將 Andrew 的訊息新增至messageText。
確認您的程式代碼更新
在程式代碼中隔離問題之後,您應該更新程式碼,然後確認問題已修正。
在 [ 偵錯控件] 工具列上,選取 [ 停止]。
請花一分鐘的時間修正程式碼邏輯。
您有幾個選項可用來修正程式碼中識別的問題。 例如:
您可以保留現有的程式代碼行,並將大括弧
{}新增至if每個程式代碼區塊的結構。您可以合併最後
else if一個語句後面的兩個程式代碼行,形成單一語句,如下所示:else if (name == "AllGreetings") messageText = SophiaMessage() + "\n\r" + AndrewMessage();
不論是哪一種方式,更新的程式碼都必須在
AndrewMessage時在程式碼區塊中包含對name == "AllGreetings"的呼叫。在 [檔案] 功能表上,選取 [儲存]。
使用調試程式 UI 工具來清除您稍早設定的斷點。
在 [ 執行] 功能表上,選取 [ 開始偵錯]。
確認您的程式代碼現在會產生預期的結果。
Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you. Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you.在 [ 偵錯控件] 工具列上,選取 [ 停止]。
祝賀! 您已成功使用 Visual Studio Code 調試程式來協助您隔離和更正邏輯問題。
回顧
以下為本單元須記住的一些重點:
- 使用斷點在偵錯過程中暫停程式代碼執行。
- 使用 [偵錯控制項] 工具列中的 [逐步執行] 來觀察下一個可執行檔程式碼行。
- 使用 [偵錯控制項] 工具列中的 [跳出] 前進到目前的方法,並回到呼叫方法的程式碼行。