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

適用于:是Visual Studio否Visual Studio for Mac否Visual Studio Code

本文以逐步解說介紹 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. 在開始視窗中,選擇 [建立新專案]。

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

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

    主控台應用程式的 C# 範本螢幕擷取畫面。

    注意

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

  4. 在 [設定新專案] 視窗中,在 [專案名稱] 方塊中輸入或輸入GetStartedDebugging。 然後選擇 [ 下一步]。

  5. 選擇建議的目標 Framework (.NET Core 3.1 (長期支援) ) 或 .NET 5.0 (Current) ,然後選擇 [ 建立]。

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

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

  2. 在開始視窗中,選擇 [建立新專案]。

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

    套用語言和平臺篩選之後,請選擇 [主控台應用程式 ] 範本,然後選擇 [ 下一步]。

    Visual Studio 2022 中 [建立新專案] 視窗中 [主控台應用程式] 範本的螢幕擷取畫面。

    注意

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

  4. 在 [設定新專案] 視窗中,在 [專案名稱] 方塊中輸入或輸入GetStartedDebugging。 然後選擇 [ 下一步]。

  5. 在 [其他資訊] 視窗中,確定已選取 [架構] 下拉式功能表中的[.NET 6.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 ([ > 偵錯開始偵 錯]) 或 [ 開始 偵錯] 按鈕的 [開始偵錯] 按鈕影像。 在偵錯工具列中。

    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) 。

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

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

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

    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,或選擇 [偵錯] 工具列中的[停止偵錯] 按鈕,或從功能表欄選擇 [>偵錯停止偵錯]。

    Visual Studio 2022 [偵錯] 工具列中 [停止偵錯] 按鈕的螢幕擷取畫面。

  3. 在主控台視窗中,選取任何索引鍵以關閉主控台視窗。

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

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

    name += letters[i];

    點的紅色圓圈影像。 隨即顯示您設定中斷點的位置。

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

  2. F5 或 [ 開始偵 錯] 按鈕 [開始偵錯] 按鈕的螢幕擷取畫面。錯、應用程式啟動,偵錯工具會執行至您設定中斷點的程式程式碼。

    設定並叫用中斷點

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

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

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

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

    name += letters[i];

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

    Visual Studio 2022 中中斷點的螢幕擷取畫面。

    中斷點是可靠偵錯的基本功能。 您可以設定中斷點,讓 Visual Studio 暫停執行中的程式碼,以便查看變數的值或記憶體的行為,或知道程式碼的分支是否正在執行。

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

    此螢幕擷取畫面顯示 Visual Studio 2022 程式碼編輯器中的中斷點,並在中斷點暫停程式碼執行。

    黃色箭號指向偵錯工具暫停的 語句。 應用程式執行會在相同的時間點暫停,但尚未執行 語句。

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

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

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

  1. 在 語句上 name += letters[i] 暫停時,將滑鼠停留在變數上方 letters ,您會看到其預設值,也就是陣列中第一個專案的值。 char[10]

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

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

    偵錯工具在 'name+= letters[I]' 語句暫停的螢幕擷取畫面。

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

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

    F10 會將偵錯工具前進到下一個語句,而不逐步執行應用程式程式碼中的函式或方法, (程式碼仍會執行) 。 藉由在方法呼叫上 SendMessage 按 F10,我們略過了實作程式碼的 SendMessage (,或許我們目前對) 不感興趣。

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

    Visual Studio 偵錯工具的動畫屏幕快照,顯示在偵錯期間按下 F10 以「逐步執行」並逐一查看迴圈的效果。

    變數的值會隨著迴圈的每個反復 for 專案而變更,其中顯示 、、 frfre 等的值 f 。 若要在此案例中更快速地透過迴圈前進偵錯工具,您可以按F5 (,或改為選擇 [> 錯繼續]) ,這會將您前進到中斷點,而不是下一個語句。

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

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

    您應該在此行程式碼中:

    SendMessage(name, a[i]);

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

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

    SendMessage 方法上執行指標的螢幕擷取畫面。

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

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

  8. Shift + F11 (或偵 > 錯跳出) 。

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

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

  1. 在 語句上 name += letters[i] 暫停時,將滑鼠停留在變數上方 letters ,以查看顯示陣列大小和元素類型的資料提示。 char[10]

    注意

    偵錯工具最有用的功能之一,就是能夠檢查變數。 通常,當您嘗試對問題進行偵錯時,您會嘗試找出變數是否有特定時間預期的值。 檢視資料提示是檢查該秘訣的好方法。

  2. letters展開變數以檢視其所有陣列專案及其值。

    Visual Studio 2022 中偵錯工具資料提示的螢幕擷取畫面,其中顯示 'letters' 陣列變數的專案值。

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

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

    F10 會進階偵錯工具,而不逐步執行函式或方法,不過其程式碼仍會執行。 如此一來,我們已略過方法中的 SendMessage 程式碼偵錯,我們目前不感興趣。

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

    Visual Studio 2022 中偵錯工具資料提示的螢幕擷取畫面,其中顯示 'name' 變數的字串值。

    變數的值會隨著迴圈的每個反復 for 專案而變更,其中顯示 、、 frfre 等的值 f 。 若要更快速地在迴圈中前進偵錯工具,請改為選取 F5 ,這會前進到中斷點,而不是下一個語句。

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

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

    SendMessage(name, a[i]);

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

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

    顯示 'SendMessage' 方法內偵錯工具執行指標的螢幕擷取畫面。

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

    完成方法偵 SendMessage 錯之後,您就可以返回 for 方法的 main 迴圈。

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

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

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

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

  2. 在程式碼編輯器中,向下捲動並將滑鼠停留 Console.WriteLine 在 方法中的 SendMessage 方法上,直到綠色 [執行至按一下] 按鈕的 [按一下] 按鈕影像[執行至按一下] 按鈕為止。會出現在左側。 按鈕的工具提示會顯示「執行到這裡」。

    [執行至按一下] 按鈕的螢幕擷取畫面。

    注意

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

  3. 按一下 [ 執行至按一下 ] 按鈕的 [執行至按一下] 按鈕影像。

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

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

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

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

    顯示 Visual Studio 2022 中 [執行至按一下] 按鈕的螢幕擷取畫面。

  3. 選擇 [ 執行至按一下] 按鈕。 或者,在 語句中使用 Console.WriteLine 游標,選取 Ctrl+F10。 或者,以滑鼠右鍵按一下 Console.WriteLine 方法呼叫,然後從操作功能表選擇 [ 執行至游標 ]。

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

    使用 [ 執行至點選 ] 按鈕類似于設定暫時中斷點,而且在開啟的檔案中,快速在應用程式程式碼的可見區域內快速取得。

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

按一下[重新開機應用程式] 按鈕的 [重新開機映射]。[偵錯工具列] 中的按鈕 (Ctrl + Shift + F5) 。

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

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

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

Visual Studio 2022 偵錯工具列中 [重新開機] 按鈕的螢幕擷取畫面。

重新開機 會停止偵錯工具,然後在一個步驟中重新開機偵錯工具。 偵錯工具重新開機時,它會執行至第一個中斷點,這是您先前在迴圈內設定的 for 中斷點,然後暫停。

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

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

    如果關閉,請選擇 [> 偵錯Windows>自動程式] 以在偵錯工具中暫停時開啟它。

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

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

  3. letters展開 變數以顯示它所包含的專案。

    Visual Studio 中 [區域變數視窗] 的螢幕擷取畫面。

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

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

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

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

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

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

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

    Visual Studio 2022 中 [區域變數] 視窗的螢幕擷取畫面,其中已展開 [字母] 陣列變數。

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

設定監看式

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

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

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

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

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

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

  2. 既然您已在變數上 name 設定watch,請逐步執行程式碼,以查看每個 for 迴圈反復專案變更變數的值 name

    不同于其他變數視窗, [監看式] 視窗一律會顯示您正在監看的變數,不過它們會在範圍不足時呈現灰色。

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

檢查呼叫堆疊

  1. for 迴圈中暫停時,按一下 [呼叫堆疊] 視窗,此視窗預設會在右下方的窗格中開啟。

    如果關閉,請選擇 [> 錯Windows>呼叫堆疊] 以在偵錯工具中暫停時開啟它。

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

    Visual Studio 中 [呼叫堆疊] 視窗的螢幕擷取畫面。

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

    注意

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

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

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

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

呼叫堆疊可協助您瞭解應用程式的執行流程,方法是顯示呼叫方法和函式的順序。

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

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

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

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

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

    Visual Studio 2022 中 [呼叫堆疊] 視窗的螢幕擷取畫面。

    注意

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

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

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

如需 呼叫堆疊的詳細資訊,請參閱 如何:檢查呼叫堆疊

變更執行流程

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

  2. 在方法呼叫中 SendMessage 暫停偵錯工具時,使用滑鼠抓取黃色箭號 (左邊的執行指標) ,並將黃色箭號向上移動一行,回到 Console.WriteLine

  3. 按下 F11

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

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

    警告

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

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

    恭喜您完成此教學課程!

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

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

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

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

    偵錯工具現在回到 Console.WriteLine 語句。

  3. 選取 F11

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

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

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

警告

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

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

恭喜您完成此教學課程!

下一步

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