共用方式為


教學課程:使用Visual StudioCode對 .NET 控制台應用程式進行偵錯

本教學課程介紹Visual StudioCode中可用於使用 .NET 應用程式的偵錯工具。

先決條件

  • 本教學課程適用於您在 使用 Visual Studio Code建立 .NET 控制台應用程式中建立的控制台應用程式。

使用偵錯組建組態

除錯發行 為 .NET 的內建建置設定。 您可以使用偵錯組建組態進行偵錯,並使用發行組態進行最終的版本發佈。

在 [偵錯] 組態中,程式會使用完整的符號偵錯資訊編譯,而且不會進行優化。 優化會使偵錯複雜,因為原始程式碼與產生的指令之間的關聯性比較複雜。 程序的發行組態沒有符號偵錯資訊,而且已完全優化。

根據預設,Visual Studio Code 啟動設定會使用偵錯組建組態,因此您不需要在偵錯之前加以變更。

  1. 啟動 Visual Studio Code。

  2. 開啟您在 使用 Visual Studio Code建立的 .NET 控制台應用程式專案的資料夾。

設定斷點

斷點 會在執行斷點的行之前,暫時中斷應用程式的執行。

  1. 開啟 Program.cs 檔案。

  2. 在程式碼視窗左邊的空白區域點擊,於顯示名稱、日期和時間的行上設定 斷點。 左邊欄位位於行號的左邊位置。 設定斷點的其他方式是按下 F9,或當選取程式碼行時,從功能表選擇 [執行]>[切換斷點]

    Visual Studio Code 會在左邊緣顯示紅點,以標示設定斷點的行。

    斷點集

開始偵錯

  1. 選取左側功能表上的 [偵錯] 圖示,以開啟 [偵錯] 檢視。

    開啟 Visual Studio Code 中的 [偵錯] 索引標籤

  2. 選擇 執行和偵錯。 如果系統詢問,請選擇 C#,然後選擇 C#,啟動專案。 在偵錯模式中啟動程式的其他方式是按 F5,或從功能表選擇 [執行][開始偵錯]

    開始偵錯

  3. 若要求 選取 [啟動組態],請選取 [C#:HelloWorld HelloWorld]

  4. 選取 [偵錯控制台] 索引標籤,以查看程式在等候回應之前所顯示的「您的名稱為何?」提示。

    選取 [偵錯控制台] 索引標籤

  5. 偵錯控制台 視窗中,依提示輸入名稱的要求輸入字串,然後按 Enter

    當程序執行到達斷點並在執行 Console.WriteLine 方法之前,它會停止。 Variables 視窗中的 [局部變數] 區段會顯示目前執行中方法中定義的變數值。

    於某一點程式暫停,顯示局部變數

使用偵錯主控台

偵錯控制台 視窗可讓您與正在偵錯的應用程式互動。 您可以變更變數的值,以查看其如何影響程式。

  1. 選取 [偵錯控制台] 索引標籤。

  2. 偵錯控制台 視窗底部的提示中輸入 name = "Gracie",接著按下 Enter鍵。

    變更變數值

  3. 在 [偵錯控制台] 視窗 底部輸入 ,然後按 Enter

    [變數] 視窗會顯示 namecurrentDate 變數的新值。

  4. 選取工具列中的 [繼續] 按鈕,以繼續執行程式。 另一個繼續方式是按 F5

    繼續偵錯

    控制台視窗中顯示的值會對應至您在 偵錯控制台中所做的變更。

    終端機顯示已輸入的值

  5. Enter 結束應用程式並停止偵錯。

設定條件斷點

程式會顯示使用者輸入的字串。 如果使用者未輸入任何東西,會發生什麼事? 您可以使用稱為 條件斷點的實用偵錯功能來測試此功能。

  1. 在代表斷點的紅點上按下滑鼠右鍵(Ctrl-click on macOS)。 在操作功能表中,選取 [編輯斷點],以開啟可讓您輸入條件表達式的對話方塊。

    斷點操作功能表

  2. 選取下拉式清單中的 Expression,輸入下列條件表達式,然後按 Enter

    String.IsNullOrEmpty(name)
    

    輸入條件表示式

    每次中斷點達成時,調試程式都會呼叫 String.IsNullOrEmpty(name) 方法,而且只有在方法呼叫傳回 true時,才會在這行中斷。

    與其使用條件表達式,您可以指定 命中計數,此操作會在語句執行達到指定次數之前暫停程式執行。 另一個選項是指定 篩選條件,這會根據線程標識碼、進程名稱或線程名稱等屬性中斷程式執行。

  3. 使用除錯模式按 F5啟動程式。

  4. 在 [偵錯控制台] 索引標籤中,當系統提示您輸入您的名稱時,請按下 Enter

    因為您指定的條件(namenullnameString.Empty)已滿足,所以程式執行會在到達斷點時且執行 Console.WriteLine 方法之前停止。

    [變數] 視窗會顯示 name 變數的值是 ""String.Empty

  5. 確認此值為空字串,請在偵錯控制台 提示字元中輸入下列 語句,然後按下 Enter。 結果是 true

    name == String.Empty
    
  6. 選取工具列上的 [繼續] 按鈕,以繼續執行程式。

  7. Enter 結束程式並停止偵錯。

  8. 按兩下程式代碼視窗左邊界中的點,以清除斷點。 清除斷點的其他方式是按下 F9,或在選取程式代碼行時,從功能表中選擇 執行 > 切換斷點

  9. 如果您收到斷點條件遺失的警告,請選取 [移除斷點]

逐步執行程式碼

Visual Studio Code 也可讓您逐行執行程式並監視其執行。 通常,您會設定斷點,並遵循程式碼中的程序流程。 由於此程式很小,因此您可以逐步執行整個程式。

  1. Main 方法的起始大括弧上設定斷點。

  2. F5 開始偵錯。

    Visual Studio Code 會標示斷點行。

    此時,[變數] 視窗會顯示 args 陣列是空的,namecurrentDate 都有預設值。

  3. 選取 執行>,選擇「逐步執行」,或按下 F11

    Step-Into 按鈕

    Visual Studio Code 會標示下一行。

  4. 選取 執行>逐步執行 或按 F11

    Visual Studio Code 會執行名稱提示字元的 Console.WriteLine,並醒目提示下一行執行。 下一行是 nameConsole.ReadLine變數 視窗不變,而 [終端機] 索引標籤會顯示 [您的名稱為何?] 提示。

  5. 選取 執行>進入,或按 F11

    Visual Studio 會醒目提示 name 變數指派。 [變數] 視窗顯示 name 仍然是 null

  6. 在 [終端機] 索引標籤中輸入字串,然後按 Enter來回應提示。

    偵錯控制台 索引標籤可能不會顯示您在輸入時輸入的字串,但 Console.ReadLine 方法會擷取您的輸入。

  7. 選取 執行>逐步執行,或按 F11

    Visual Studio Code 會醒目提示 currentDate 變數指派。 [Variables] 視窗會顯示呼叫 Console.ReadLine 方法所傳回的值。 [終端機] 索引標籤會顯示您在提示符中輸入的字串。

  8. 選取 執行>逐步執行 或按 F11

    [變數] 視窗顯示 currentDate 變數的值,該值是從 DateTime.Now 屬性指派後得到的。

  9. 選取 執行>逐步執行 或按 F11

    Visual Studio Code 會呼叫 Console.WriteLine(String, Object, Object) 方法。 主控台視窗會顯示格式化字串。

  10. 選擇 執行>步出,或按 Shift+F11

    Step-Out 按鈕

    終端會顯示「按任意鍵結束...」。

  11. 按任意鍵結束程式。

使用發行構建組態

測試過應用程式的偵錯版本之後,您也應該編譯及測試發行版本。 發行版本包含可能會影響應用程式行為的編譯程序優化。 例如,設計來改善效能的編譯程式優化可以在多線程應用程式中建立競爭條件。

若要建置及測試主控台應用程式的發行版本,請開啟 終端機 並執行下列命令:

dotnet run --configuration Release

其他資源

  • Visual Studio Code 中的 偵錯

後續步驟

在本教學課程中,您已使用 Visual Studio Code 偵錯工具。 在下一個教學課程中,您會發佈可部署的應用程式版本。