教學課程:了解如何使用 Visual Studio 對 C# 程式碼進行偵錯

本文以逐步解說介紹 Visual Studio 偵錯工具的功能。 如果您希望檢視偵錯工具功能的概要,請參閱偵錯工具簡介。 當您偵錯您的應用程式,通常表示您正在執行附加偵錯工具的應用程式。 執行此工作時,偵錯工具會提供許多方式來查看您程式碼所執行的功能。 您可以逐步執行程式碼並查看儲存在變數中的值、可以設定變數的監看式以查看值變更、可以檢查程式碼的執行路徑,查看是否正在執行程式碼的分支,依此類推。 如果這是您第一次嘗試偵錯程式碼,您可能想要先閱讀適用於初學者的偵錯,再瀏覽本文。

雖然示範應用程式是 C#,但大多數功能也適用於 C++、Visual Basic、F#、Python、JavaScript 及 Visual Studio 支援的其他語言 (F# 不支援「編輯後繼續」。F# 和 JavaScript 不支援 [自動變數] 視窗)。 螢幕擷取畫面則使用 C# 表示。

在此教學課程中,您需要:

  • 啟動偵錯工具,並叫用中斷點。
  • 了解命令以在偵錯工具中逐步執行程式碼
  • 檢查資料提示和偵錯工具視窗中的變數
  • 檢查呼叫堆疊

必要條件

您必須已安裝 Visual Studio 2022,並具有 .NET 桌面開發工作負載。

您必須已安裝 Visual Studio 2019,並具有 .NET Core 跨平台開發工作負載。

如果您尚未安裝 Visual Studio,請前往 Visual Studio 下載頁面免費進行安裝。

如果您需要安裝工作負載,但已安裝 Visual Studio,請移至 [工具]>[取得工具與功能...],以開啟 Visual Studio 安裝程式。 Visual Studio 安裝程式即會啟動。 選擇 [.NET Core 跨平台開發] 工作負載,然後選擇 [修改]

如果您已有 Visual Studio,但未安裝 .NET 桌面開發工作負載,請移至 [工具]>[取得工具和功能...],這會啟動 Visual Studio 安裝程式。 在 Visual Studio 安裝程式中,選擇 [.NET 桌面開發]工作負載,然後選擇 [修改]

建立專案

首先,您會建立 .NET Core 主控台應用程式專案。 此專案類型隨附您需要的所有範本檔案,甚至是在您新增任何項目之前便已完備!

  1. 開啟 Visual Studio。 如果開始視窗未開啟,請選取 [檔案]> [開始視窗]

  2. 在 [開始] 視窗上,選取 [建立新專案]

  1. 在 [建立新專案] 視窗的搜尋方塊中輸入 console。 接下來,從語言清單中選擇 C#,然後從平台清單中選擇 Windows

    在您套用語言和平台的篩選條件之後,請選擇 .NET Core 的 [主控台應用程式] 範本,然後選取 [下一步]

    Screenshot of the C# template for the Console App.

    注意

    如果您未看到 [主控台應用程式] 範本,您可以從 [建立新專案] 視窗中安裝。 在 [找不到你要尋找的項目嗎?] 訊息中,選擇 [安裝更多工具和功能] 連結。 接下來,在 Visual Studio 安裝程式中選擇 .NET Core 跨平台開發工作負載。

  2. 在 [設定您的新專案] 視窗的 [專案名稱] 方塊中,輸入 GetStartedDebugging。 然後選取下一步

  3. 選取建議的目標架構 (.NET 8.0 或長期支援),然後選取 [建立]

  1. 在 [建立新專案] 視窗的搜尋方塊中輸入 console。 接下來,從語言清單中選擇 C#,然後從平台清單中選擇 Windows

    在您套用語言和平台的篩選條件之後,選擇 [主控台應用程式] 範本,然後選取 [下一步]

    Screenshot of the 'Console Application' template in the 'Create a new project' window of Visual Studio 2022.

    注意

    如果您未看到 [主控台應用程式] 範本,您可以從 [建立新專案] 視窗中安裝。 在 [找不到你要尋找的項目嗎?] 訊息中,選擇 [安裝更多工具和功能] 連結。 然後,在 Visual Studio 安裝程式中選擇 [.NET 桌面開發] 工作負載。

  2. 在 [設定您的新專案] 視窗的 [專案名稱] 方塊中,輸入 GetStartedDebugging。 然後選取下一步

  3. 在 [其他資訊] 視窗中,確認已在 [架構] 下拉式功能表中選取 [.NET 8.0],然後選取 [建立]

Visual Studio 會隨即開啟您的新專案。

建立應用程式

Program.cs 中,將所有預設程式碼取代為下列程式碼:

using System;

class ArrayExample
{
   static void Main()
   {
      char[] letters = { 'f', 'r', 'e', 'd', ' ', 's', 'm', 'i', 't', 'h'};
      string name = "";
      int[] a = new int[10];
      for (int i = 0; i < letters.Length; i++)
      {
         name += letters[i];
         a[i] = i + 1;
         SendMessage(name, a[i]);
      }
      Console.ReadKey();
   }

   static void SendMessage(string name, int msg)
   {
      Console.WriteLine("Hello, " + name + "! Count to " + msg);
   }
}

啟動偵錯工具!

  1. F5 ([偵錯] > [開始偵錯]) 或偵錯工具列中的 [開始偵錯] 按鈕 Image of the Start Debugging button.

    F5 鍵會啟動應用程式並將偵錯工具附加至應用程式處理序,但目前我們還沒有做任何特別動作來檢查程式碼。 因此,應用程式只會載入,且您會看到此主控台輸出。

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    

    在本教學課程中,我們將使用偵錯工具仔細查看這個應用程式,並了解偵錯工具功能。

  2. 按下紅色停止按鈕 (Shift + F5) 來停止偵錯工具。 Image of the Stop Debugging button.

  3. 在主控台視窗中,按下按鍵以關閉主控台視窗。

大部分情況下,我們在這裡使用鍵盤快速鍵,因為其是執行偵錯工具命令的快速方式。 也會注意到對等的命令,例如工具列或功能表命令。

  1. 若要啟動偵錯工具,請選取 F5,或選擇標準工具列中的 [偵錯目標] 按鈕,或在偵錯工具列中選擇 [開始偵錯] 按鈕,或從功能表列選擇 [偵錯]>[開始偵錯]

    Screenshot of the Debug Target button in the Standard toolbar of Visual Studio 2022.

    F5 會啟動應用程式,以及附加至應用程式流程的偵錯工具。 由於我們沒有執行任何特殊項目來檢查程式碼,因此應用程式會執行至完成,且您會看到主控台輸出。

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    
  2. 若要停止偵錯工具,請選取 Shift+F5,或選擇偵錯工具列中的 [停止偵錯] 按鈕,或從功能表列選擇 [偵錯]>[停止偵錯]

    Screenshot of the Stop debugging button in the Debug toolbar of Visual Studio 2022.

  3. 在主控台視窗中,選取按鍵以關閉主控台視窗。

設定中斷點,並啟動偵錯工具

  1. Main 函式的 for 迴圈中,按一下下列程式碼行的左邊界來設定中斷點:

    name += letters[i];

    您設定中斷點的位置會出現紅色圓圈 Image of a breakpoint.

    中斷點是可靠偵錯的其中一個最基本且必要功能。 中斷點會指出 Visual Studio 應暫停程式碼執行的地方,如此一來您可以查看變數的值或記憶體的行為,或查看程式碼分支是否正在執行。

  2. F5 或 [開始偵錯] 按鈕。 Screenshot of the Start Debugging button. 應用程式即會啟動,而偵錯工具會執行到您設定中斷點的程式碼行。

    Set and hit a breakpoint

    黃色箭號表示偵錯工具暫停時的陳述式,這也表示會在相同的點暫停執行應用程式 (尚未執行此陳述式)。

    如果尚未執行應用程式,則 F5 會啟動偵錯工具並在第一個中斷點停止。 否則,F5 鍵會繼續執行應用程式到下一個中斷點。

    如果您知道要詳細檢查的程式碼行或程式碼區段,則中斷點是一個很有用的功能。 如需您可以設定之不同中斷點類型的資訊,例如條件中斷點,請參閱使用中斷點

  1. Main 函式的 for 迴圈中,按一下下列程式碼行的左邊界來設定中斷點:

    name += letters[i];

    您設定中斷點的位置會出現紅色圓圈。

    Screenshot of a breakpoint in Visual Studio 2022.

    中斷點是可靠偵錯的必要功能。 您可以在您想要 Visual Studio 暫停程式碼執行的位置設定中斷點,以便您可以查看變數的值或記憶體的行為,或了解程式碼分支是否正在執行。

  2. 若要開始偵錯,請選取 F5,或選擇標準工具列中的 [偵錯目標] 按鈕,或在偵錯工具列中選擇 [開始偵錯] 按鈕,或從功能表列選擇 [偵錯]>[開始偵錯]。 應用程式即會啟動,而偵錯工具會執行到您設定中斷點的程式碼行。

    Screenshot showing a breakpoint in the code editor of Visual Studio 2022, with code execution paused at the breakpoint.

    黃色箭號指向偵錯工具暫停所在的陳述式。 應用程式執行會在同一點上暫停,陳述式因而尚未執行。

    當應用程式未執行時,F5 會啟動偵錯工具,其會執行應用程式,直到到達第一個中斷點為止。 如果應用程式在中斷點暫停,F5 會繼續執行應用程式,直到其到達下一個中斷點為止。

    當您了解要詳細檢查的程式碼行或程式碼區段時,中斷點是一個很有用的功能。 如需您可以設定哪些不同類型中斷點的相關資訊,例如條件式中斷點,請參閱使用中斷點

在大部分情況下,我們會在這裡使用鍵盤快速鍵,因為這是在偵錯工具中快速執行應用程式的好方法 (功能表命令等對等命令會顯示在括弧內)。

  1. 程式碼執行於 name += letters[i] 陳述式暫停時,將滑鼠暫留在 letters 變數上方,您會看到其預設值,即陣列中的第一個元素值 char[10]

    可讓您檢查變數的功能是偵錯工具最實用功能之一,而且有不同的方法來完成此作業。 通常當您嘗試偵錯問題時,您會嘗試確定變數是否會儲存您希望其在特定時間具有的值。

  2. 展開 letters 變數以查看其屬性,其中包括變數包含的所有元素。

    Screenshot of the debugger paused at the 'name+= letters[I]' statement.

  3. 接下來,將滑鼠停留在 name 變數上,您會看到其目前值 (空字串)。

  4. F10 (或選擇 [偵錯] > [逐步執行] 兩次),以前進到 SendMessage 方法呼叫,然後再按 F10 一次。

    F10 會將偵錯工具推進至下一個陳述式,而不需要逐步執行應用程式程式碼中的函式或方法 (此程式碼仍會執行)。 藉由在 SendMessage 方法呼叫上按 F10,我們略過了 SendMessage 的實作程式碼 (我們現在可能對此不感興趣)。

  5. F10 (或[偵錯]>[逐步執行]) 數次,以多次逐一查看 for 迴圈、在中斷點再次暫停,並在每次檢查其值時停留在 name 變數上。

    An animated screenshot of the Visual Studio Debugger showing the effect of pressing F10 to

    變數的值會隨著 for 迴圈每次重複而變更,依序顯示 ffrfre 等等的值,。 若要在此案例中更快地推進偵錯工具通過迴圈,您可以按 F5 (或選擇 [偵錯]>[繼續]),這會使您前進到中斷點,而不是下一個陳述式。

    很多時候,您會希望在偵錯時快速檢查變數的屬性值,以查看其是否如您預期的儲存值,而資料提示是很適合的方法。

  6. 雖然程式碼執行仍會在 Main 方法的 for 迴圈中暫停,但請按 F11 (或選擇 [偵錯 > 逐步執行]),直到您在 SendMessage 方法呼叫中暫停為止。

    您應該在此程式碼中:

    SendMessage(name, a[i]);

  7. 再按 F11 一次,以逐步執行 SendMessage 方法。

    黃色指標會前進至 SendMessage 方法。

    Screenshot of the execution pointer at the SendMessage method.

    F11 鍵是逐步執行命令,可將應用程式執行一次往前推進一個陳述式。 F11 鍵是以最詳細的方式檢查執行流程的好方法。 根據預設,偵錯工具會略過非使用者程式碼 (如果您想要更多的詳細資料,請參閱 Just My Code)。

    假設您已完成檢查 SendMessage 方法,而您想要退出方法,但會留在偵錯工具中。 您可以使用 [跳離函式] 命令完成這項動作。

  8. 按下 Shift + F11 (或 [偵錯] [跳離函式]>)。

    此命令會繼續應用程式執行 (並推進偵錯工具),直到目前的方法或函式傳回為止。

    您應該回到 Main 方法中的 for 迴圈,在 SendMessage 方法呼叫中暫停。 如需不同方式在程式碼中移動的詳細資訊,請參閱在偵錯工具中瀏覽程式碼

  1. 當程式碼執行在 name += letters[i] 陳述式上暫停時,將滑鼠暫留在 letters 變數上方,以查看顯示陣列大小和元素類型 (char[10]) 的資料提示。

    注意

    偵錯工具的其中一個最有用功能是其檢查變數的能力。 通常,嘗試偵錯問題時,您會嘗試了解變數是否有您在特定時間預期的值。 檢視資料提示是檢查該情況的好方法。

  2. 展開 letters 變數以檢視其所有陣列元素及這些元素的值。

    Screenshot of a debugger data tip in Visual Studio 2022 that shows the element values for the 'letters' array variable.

  3. 將滑鼠停留在 name 變數上方,以查看其目前值,也就是空字串。

  4. 若要使偵錯工具前進到下一個陳述式,請選取 F10,或選擇偵錯工具列中的 [逐步執行] 按鈕,或從功能表列選擇 [偵錯]>[逐步執行]。 再選取 F10 兩次,以移動超過 SendMessage 方法呼叫。

    F10 會在不逐步執行函式或方法的情況下推進偵錯工具,但其程式碼仍會執行。 如此一來,我們已略過偵錯 SendMessage 方法中的程式碼,我們現在對此不感興趣。

  5. 若要逐一查看 for 迴圈數次,請重複選取 F10。 在每次迴圈重複期間,暫停在中斷點,然後將滑鼠停留在 name 變數上方,以在資料提示中檢查其值。

    Screenshot of a debugger data tip in Visual Studio 2022 that shows the string value for the 'name' variable.

    變數的值會隨著 for 迴圈每次重複而變更,依序顯示 ffrfre 等等的值,。 若要更快地推進偵錯工具通過迴圈,請改為選取 F5,這會前進到中斷點,而不是下一個陳述式。

  6. 當程式碼執行在 Main 方法的 for 迴圈中暫停時,請選取 F11,或從偵錯工具列選擇 [逐步執行] 按鈕,或從功能表列選擇 [偵錯]>[逐步執行],直到您到達 SendMessage 方法呼叫為止。

    偵錯工具應該在此程式程式碼暫停:

    SendMessage(name, a[i]);

  7. 若要逐步執行 SendMessage 方法,請再次選取 F11

    黃色指標會前進至 SendMessage 方法。

    Screenshot showing the execution pointer of the debugger within the 'SendMessage' method.

    F11 會協助您更深入地檢查程式碼的執行流程。 若要從方法呼叫中逐步執行方法,請選取 F11。 根據預設,偵錯工具會略過逐步執行非使用者方法。 若要了解如何偵錯非使用者程式碼,請參閱 Just My Code

    一旦完成了偵錯 SendMessage 方法,您就準備好返回 main 方法的 for 迴圈。

  8. 若要離開 SendMessage 方法,請選取 Shift+F11,或選擇偵錯工具列中的 [跳離函式] 按鈕,或從功能表列選擇 [偵錯]>[跳離函式]

    [跳離函式] 會繼續應用程式執行並推進偵錯工具,直到目前的方法或函式傳回為止。

    您會看到黃色指標回到 Main 方法的 for 迴圈,暫停在 SendMessage 方法呼叫中。 如需不同方式在程式碼中移動的詳細資訊,請參閱在偵錯工具中巡覽程式碼

  1. 選取 F5,再次前進到中斷點。

  2. 在程式碼編輯器中,向下捲動並將滑鼠暫留在 SendMessage 方法的 Console.WriteLine 方法上方,直到綠色 [執行至點選處] 按鈕 Image of the Run to Click button. 出現為止。 按鈕的工具提示會顯示「執行到這裡」。

    Screenshot of the Run to Click button.

    注意

    [執行至點選處] 按鈕是 Visual Studio 2017 的新功能。 (如果您沒有看到綠色箭號按鈕,請在此範例中改用 F11,將偵錯工具推進到正確的位置。)

  3. 選取 [執行至點選處] 按鈕。 Image of the Run to Click button.

    偵錯工具會前進到 Console.WriteLine 方法。

    使用此按鈕類似於設定暫時中斷點。 [執行至點選處] 方便您在應用程式程式碼的可見區域內快速瀏覽 (您可以選取任何開啟的檔案)。

  1. 選取 F5,再次前進到中斷點。

  2. 在程式碼編輯器中,將滑鼠暫留在 SendMessage 方法的 Console.WriteLine 方法呼叫上方,直到 [執行至點選處] 按鈕出現為止。 按鈕的工具提示會顯示「執行到這裡」。

    Screenshot showing the Run to Click button in Visual Studio 2022.

  3. 選擇 [執行至點選處] 按鈕。 或者,在您的游標位於 Console.WriteLine 陳述式時,選取 Ctrl+F10。 或者,以滑鼠右鍵按一下 Console.WriteLine 方法呼叫,然後從捷徑功能表中選擇 [執行至游標處]

    偵錯工具會前進到 Console.WriteLine 方法呼叫。

    使用 [執行至點選處] 按鈕類似於設定暫時中斷點,而且可以在開啟的檔案中,於應用程式程式碼的可見區域內輕鬆地快速瀏覽。

快速重新啟動您的應用程式

選取 [偵錯工具列] 中的 [重新啟動] 按鈕 Image of the Restart App button. (Ctrl + Shift + F5)。

相對於停止應用程式並重新啟動偵錯工具,按下 [重新啟動] 可讓您節省時間。 偵錯工具會在執行程式碼叫用的第一個中斷點處暫停。

偵錯工具會在您先前在 for 迴圈內設定的中斷點再次停止。

若要在偵錯工具中從頭開始重新執行您的應用程式,請選取 Ctrl+Shift+F5,或選擇偵錯工具列中的 [重新啟動] 按鈕,或從功能表列選擇 [偵錯]>[重新啟動]

Screenshot of the Restart button in the Debug toolbar of Visual Studio 2022.

[重新啟動] 會停止偵錯工具,然後以一個步驟將其重新啟動。 當偵錯工具重新啟動時,其會執行至第一個中斷點 (這是您先前在 for 迴圈內設定的中斷點),然後暫停。

使用 [自動變數] 和 [區域變數] 視窗來檢查變數

  1. 查看程式碼編輯器底部的 [自動變數] 視窗。

    如果已關閉,選擇 [偵錯]>[視窗]>[自動變數] 在偵錯工具暫停時將其開啟。

    在 [自動變數] 視窗中,您會看到變數及其目前的值。 [自動變數] 視窗會顯示在目前行或前述行 (請查看文件以了解語言特定行為) 中使用的所有變數。

  2. 接下來,在 [自動變數] 視窗旁的索引標籤中查看 [區域變數] 視窗。

  3. 展開 letters 變數以顯示其所包含的元素。

    Screenshot of the Locals Window in Visual Studio.

    [區域變數] 視窗會顯示位在目前範圍中的變數,即為目前執行內容。

[自動變數] 和 [區域變數] 視窗會在您進行偵錯時顯示變數值。 這些視窗只能在偵錯工作階段期間使用。 [自動變數] 視窗會顯示偵錯工具所在目前行和前一行上使用的變數。 [區域變數] 視窗會顯示本機範圍中定義的變數,其通常是目前的函式或方法。

  1. 當偵錯工具暫停時,請檢視程式碼編輯器底部的 [自動變數] 視窗。

    如果 [自動變數] 視窗關閉,請選取 Ctrl+D、A,或從功能表列選擇 [偵錯]>[視窗]>[自動變數]

  2. 當偵錯工具仍然暫停時,請在 [自動變數] 視窗旁邊的索引標籤中檢視 [區域變數] 視窗。

    如果 [區域變數] 視窗已關閉,請選取 Ctrl+D、L,或選擇 [偵錯]>[視窗]>[區域變數]

  3. 在 [區域變數] 視窗中,展開 letters 變數以查看其陣列元素及這些元素的值。

    Screenshot of the Locals window in Visual Studio 2022, with the 'letters' array variable expanded.

如需 [自動變數] 和 [區域變數] 視窗的詳細資訊,請參閱在自動變數和區域變數視窗中檢查變數

設定監看式

在主要程式碼編輯器視窗中,以滑鼠右鍵按一下 name 變數,並選擇 [新增監看式]

[監看式] 視窗隨即在程式碼編輯器底部開啟。 您可以使用 [監看式] 視窗來指定您要留意的變數 (或運算式)。

現在,您已於 name 變數上設定監看式,當您在偵錯工具中移動時,就可以看到其值的變更。 不同於其他變數視窗,[監看式] 視窗一律會顯示所監看的變數 (它們在超出範圍時會呈現灰色)。

您可以指定您要在逐步執行程式碼時監看的變數或運算式,方法是將變數或運算式新增至 [監看式] 視窗。

  1. 當偵錯工具暫停時,以滑鼠右鍵按一下 name 變數,然後選擇 [新增監看式]

    [監看式] 視窗預設會在程式碼編輯器底部開啟。

  2. 既然您已在 name 變數上設定監看式,請逐步執行您的程式碼,查看 name 變數的值是否會在每次 for 迴圈重複時變更。

    不同於其他變數視窗,[監看式] 視窗一律會顯示所監看的變數。 範圍以外的變數會顯示為無法使用。

如需 [監看式] 視窗的詳細資訊,請參閱使用監看式視窗監看變數

檢查呼叫堆疊

  1. 當程式碼執行在 for 迴圈中暫停時,選取 [呼叫堆疊] 視窗,此視窗預設會在右下方的窗格中開啟。

    如果已關閉,選擇 [偵錯]>[視窗]>[呼叫堆疊] 在偵錯工具暫停時將其開啟。

  2. 選取 F11 幾次,直到您在 SendMessage 方法中看到偵錯工具暫停為止。 查看 [呼叫堆疊] 視窗。

    Screenshot of the Call Stack window in Visual Studio.

    [呼叫堆疊] 視窗會顯示方法和函式的呼叫順序。 第一行會顯示目前的函式 (此應用程式中的 SendMessage 方法)。 第二行會顯示已從 Main 方法呼叫 SendMessage,依此類推。

    注意

    [呼叫堆疊] 視窗類似於某些 IDE (例如 Eclipse) 中的 [偵錯] 檢視方塊。

    呼叫堆疊是檢查並了解應用程式執行流程的好方法。

    您可以按兩下某一行的程式碼來查看其原始程式碼,這也會變更偵錯工具所檢查的目前範圍。 此動作不會讓偵錯工具往前推進。

    您也可以從 [呼叫堆疊] 視窗使用滑鼠右鍵功能表來執行其他動作。 例如,您可以在指定的函式中插入中斷點,使用 [執行至游標處] 讓偵錯工具往前推進,並檢查原始程式碼。 如需詳細資訊,請參閱如何:檢查呼叫堆疊

[呼叫堆疊] 可藉由顯示呼叫方法和函式的順序,協助您了解應用程式的執行流程。

  1. 在偵錯工具暫停在 for 迴圈時,請檢視 [呼叫堆疊] 視窗,此視窗預設會在程式碼編輯器的右下窗格中開啟。

    如果 [呼叫堆疊] 視窗已關閉,請選取 Ctrl+D、C,或從功能表列選擇 [偵錯]>[視窗]>[呼叫堆疊]

    在 [呼叫堆疊] 視窗中,您會在目前 Main 方法上看到黃色指標。

  2. 選取 F11 幾次,直到您在 SendMessage 方法中看到偵錯工具暫停為止。

    [呼叫堆疊] 視窗的頂端行會顯示目前函式,也就是 SendMessage 方法。 第二行會顯示已從 Main 方法呼叫 SendMessage 方法。

    Screenshot of the Call Stack window in Visual Studio 2022.

    注意

    [呼叫堆疊] 視窗類似於某些 IDE (例如 Eclipse) 中的 [偵錯] 檢視方塊。

    在 [呼叫堆疊] 視窗中,您可以按兩下程式碼以移至該原始程式碼,這會變更偵錯工具目前正在檢查的範圍。 此動作不會讓偵錯工具往前推進。

    您也可以從 [呼叫堆疊] 視窗使用滑鼠右鍵功能表來執行其他動作。 例如,您可以將中斷點插入至指定的函式、使用 [執行至游標處] 來推進偵錯工具,或移至原始程式碼。

如需 [呼叫堆疊] 的詳細資訊,請參閱作法:檢查呼叫堆疊

變更執行流程

  1. F11 兩次以執行 Console.WriteLine 方法。

  2. 當偵錯工具在 SendMessage 方法呼叫中暫停後,使用滑鼠抓取黃色箭號或執行指標 (位於左邊界),然後將指標上移一行到 Console.WriteLine 陳述式。

  3. 按下 F11

    偵錯工具會重新執行 Console.WriteLine 方法 (您會在主控台視窗輸出中看到此動作)。

    藉由變更執行流程,您可以執行一些作業,例如測試不同的程式碼執行路徑,或重新執行程式碼而不重新啟動偵錯工具。

    警告

    您通常需要謹慎使用這項功能,您會在工具提示中看到一則警告。 也可能會看到其他警告。 移動指標無法將應用程式還原成先前的應用程式狀態。

  4. F5 鍵繼續執行應用程式。

    恭喜您完成此教學課程!

您可以移動執行指標,以在偵錯時變更應用程式的流程。

  1. 偵錯工具在 for 迴圈的 SendMessage 方法呼叫中暫停後,請選取 F11 三次以逐步執行 SendMessage 方法,並在執行該方法之後移過超過 Console.WriteLine 方法。

    偵錯工具現在暫停在 SendMessage 方法的最後一個右大括號中。

  2. 使用滑鼠來抓取黃色箭號或執行指標 (在左邊界中),然後將指標向上拖曳一行。

    偵錯工具現在回到 Console.WriteLine 陳述式。

  3. 選取 F11

    偵錯工具會重新執行 Console.WriteLine 方法,且您會在主控台視窗輸出中看到重複的行。

  4. F5 繼續執行應用程式。

藉由變更執行流程,您可以執行一些作業,例如測試不同的程式碼執行路徑,或重新執行程式碼而不重新啟動偵錯工具。

警告

請小心使用這項功能。 在執行指標的工具提示中,您會看到關於可能產生非預期後果的警告。 您可能也會看到其他警告。 移動執行指標無法將您的應用程式還原為先前的狀態。

如需變更執行流程的詳細資訊,請參閱移動指標以變更執行流程

恭喜您完成此教學課程!

下一步

在本教學課程中,您已了解如何啟動偵錯工具、逐步執行程式碼,以及檢查變數。 您可能想要進一步查看偵錯工具功能,以及取得詳細資訊的連結。