練習 - 在偵錯環境中執行程式碼
Visual Studio Code 使用者介面可讓開發人員在偵錯環境中執行其程序代碼。 支援偵錯是由延伸模組提供,而針對 C# 開發人員,調試程序支援是由提供程式碼開發和 IntelliSense 支援的相同延伸模組所提供。
調試程式和應用程式互動
程式代碼調試程式可用來暫停和繼續執行程式碼、檢查變數狀態,甚至變更在運行時間指派給變數的值。 您可能想知道除錯程式如何控制及修改執行中的應用程式? 簡短的答案是,調試程式可以存取應用程式的運行時間環境和可執行的程序代碼。
備註
調試程式與運行時間環境的互動是進階主題。 此外,瞭解調試程式在幕後的運作方式並非使用調試程式的需求。 不過,下列描述可能滿足您的好奇心。
適用於 C# 的 Visual Studio Code 調試程式會使用 .NET Core 執行時間來啟動應用程式並與其互動。 當您啟動調試程式時,它會建立運行時間的新實例,並在該實例內執行應用程式。 運行時間包含應用程式程式設計介面 (API),調試程式會用來附加至執行中的進程 (您的應用程式)。
一旦您的應用程式執行並附加調試程式,調試程式就會使用 .NET Core 運行時間的偵錯 API 和標準偵錯通訊協定與執行中的進程通訊。 除錯器可以藉由設定斷點、逐步執行程式碼和檢查變數,來與應用程式互動(該應用程式在 .NET 執行環境的實例中運行)。 Visual Studio Code 的調試程式介面可讓您巡覽原始程式碼、檢視呼叫堆疊,以及評估表達式。
指定偵錯會話最常見的方法是 launch.json 檔案中的啟動組態。 此方法是調試程式工具所啟用的預設選項。 例如,如果您建立 C# 控制台應用程式,並從 [執行] 選單中選取 [開始偵錯],調試程式會使用此方法來啟動、附加至 ,然後與您的應用程式互動。
建立新的程式代碼專案
學習調試程式工具的第一個步驟是建立可在調試程式中執行的程式代碼專案。
開啟新的 Visual Studio Code 執行個體。
在 [檔案] 功能表上,選取 [開啟資料夾]。
在 [ 開啟資料夾] 對話框中,流覽至您的 Windows Desktop 資料夾。
在 [ 開啟資料夾] 對話框中,選取 [ 新增資料夾]。
將新資料夾命名為 Debug101,然後選取 [ 選取資料夾]。
在 [終端機] 功能表上,選取 [新增終端機]。
.NET CLI 命令可用來建立新的控制台應用程式。
在終端機面板命令提示字元中,輸入下列命令:
dotnet new console關閉終端面板。
檢查啟動組態以進行偵錯
Visual Studio Code 會使用啟動組態檔來指定在偵錯環境中執行的應用程式。
如果 Debug101 資料夾不包含Debug101.sln檔案,請選取 [Program.cs],然後確認已建立.sln檔案。
開啟 C# 程式代碼檔案會提示環境檢查項目檔。 .sln檔案是 Visual Studio 用來管理專案的解決方案檔,通常會在 Visual Studio Code 中建立新專案時自動建立。 調試程式會使用.sln檔案來識別應該在偵錯環境中執行的專案。
在 [檢視] 功能表上,選取 [命令選擇區]。
在命令提示字元中,輸入 .net: g,然後選取 [.NET:產生用於建置和偵錯的資產]。
請注意已新增至專案資料夾的新
.vscode資料夾。
資料夾
.vscode包含用來設定偵錯環境的檔案。.vscode展開資料夾,然後選取 launch.json 檔案。花一分鐘的時間檢查 launch.json 檔案。
啟動組態檔可以包含多個組態。 每個組態都包含一組屬性集合,可用來定義該組態。
請注意 prelaunchTask 屬性會指定 建置 任務。
在資料夾中
.vscode,選取 [tasks.json]。請注意,tasks.json 檔案包含程式代碼專案的 建置 工作。
關閉 launch.json 和 tasks.json 檔案。
您稍後會進一步瞭解此課程模組中的啟動組態屬性。
從 [執行] 功能表執行程序代碼
Visual Studio Code 中的 [ 執行 ] 功能表提供使用或不使用除錯程式來執行程式碼的選項。
開啟 Program.cs 檔案。
使用下列程式代碼取代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 視窗。
在 [偵錯工具列] 上,選取 [停止]。
從 [執行] 功能表啟動偵錯會話
[ 執行 ] 選單包含啟動偵錯會話的選項。
在 [ 執行] 功能表上,選取 [ 開始偵錯]
花一分鐘的時間檢閱 [偵錯控制台] 面板中顯示的訊息。
您應用程式的輸出與您執行時沒有偵錯時相同,但會顯示與準備偵錯環境相關的其他訊息。
請注意有關載入 .NET 資源和Debug101 應用程式的訊息。
前兩則訊息會報告載入 .NET Core 程式庫,接著載入您的 Debug101 應用程式。
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\7.0.4\System.Private.CoreLib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. Loaded 'C:\Users\someuser\Desktop\Debug101\bin\Debug\net7.0\Debug101.dll'. Symbols loaded.調試程式會使用 .NET 運行時間的特殊實例來控制應用程式的執行,並評估應用程式狀態。
在 [偵錯工具列] 上,選取 [停止]。
從 [執行和偵錯] 檢視來執行程式碼
Visual Studio Code 中的 RUN AND DEBUG 檢視支援豐富的偵錯體驗。
切換至 [執行和偵錯] 檢視。
![顯示 [執行和偵錯] 檢視中 [執行] 選項的螢幕快照。](media/run-code-run-debug-view.png)
在 [執行和偵錯] 檢視中,選取 [ 開始偵錯]。
[ 開始偵錯] 按鈕是檢視頂端控制面板上的綠色箭號。
請注意,[偵錯控制台] 面板中顯示的訊息與從 [執行] 功能表啟動偵錯工具時關於配置的訊息相同。
在 [偵錯工具列] 上,選取 [停止]。
檢查應用程式的輸出
關閉 [偵錯控制台] 面板之前,請花一分鐘的時間檢閱程式代碼所產生的輸出。
請注意,安德魯的問候語訊息意外重複。
在本課程模組的其餘部分,您將使用 Visual Studio Code 調試程式工具來調查程式代碼問題。
回顧
以下為本單元須記住的一些重點:
- 適用於 C# 的 Visual Studio Code 調試程式會使用 .NET Core 執行時間來啟動應用程式並與其互動。
- Visual Studio Code [執行 ] 功能表有選項,可讓您使用 和 不使用附加調試程式來啟動應用程式。
- [ 偵錯] 工具列 包含 [ 停止 執行中進程] 的按鈕。
- RUN AND DEBUG 檢視包含開始偵錯應用程式的選項。