教學課程:瞭解使用 Visual Studio 偵錯 Visual Basic 程式碼

本文會在逐步解說中介紹 Visual Studio 偵錯工具的功能。 如果你想了解除錯器功能的更高層次,請參見 Visual Studio 除錯器的概述。 當您 偵錯應用程式時,通常表示您正在執行附加偵錯工具的應用程式。 當您執行這項工作時,偵錯工具會提供許多方式來查看程式碼在執行時正在執行的動作。

  • 逐一檢視你的程式碼,看看變數中儲存的值。
  • 設置監視以觀察變數何時發生變化。
  • 檢查程式碼的執行路徑,看看是否有分支程式碼在執行。

如果這次練習是你第一次嘗試除錯程式碼,建議你閱讀《 Debugging for Absolute beginners》。

雖然本文中的示範應用程式使用 Visual Basic,但大部分功能適用於 C#、C++、F#、Python、JavaScript 及其他 Visual Studio 支援的語言。 F# 不支援編輯後繼續。 F# 和 JavaScript 不支援 自動 計算視窗。 螢幕擷取畫面是 Visual Basic 格式。

在本教學課程中,您會:

  • 啟動除錯器並觸發斷點
  • 了解在調試程式中逐步執行程式碼的命令
  • 檢查數據提示和調試程序視窗中的變數
  • 檢查呼叫堆疊

先決條件

你必須安裝 Visual Studio,包括 .NET Core 跨平台開發 工作負載。

  • 如果你需要安裝 Visual Studio,免費版本請參考 Visual Studio 下載資料。
  • 如果您需要安裝工作負載,但已經有 Visual Studio,請移至 [工具>] [取得工具和功能...],這會開啟 Visual Studio 安裝程式。 選擇 [.NET 桌面開發] 工作負載,然後選擇 [修改]。

建立專案

首先,建立一個 .NET Core 主控台應用程式專案。 專案類型附帶您所需的所有範本檔案,這是在您進行任何添加之前就已經具備的。

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

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

  3. 在 「建立新專案 」視窗的搜尋框中,輸入 控制台。 接下來,從 [語言] 清單中選擇 [Visual Basic ],然後從 [平臺] 清單中選擇 [Windows ]。

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

    截圖顯示「建立新專案」視窗,搜尋框中標示為「console」,語言與平台篩選器選擇「Visual Basic」和「Windows」,並選擇了 Console App 專案範本。

    備註

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

  4. 在 「配置你的新專案 」視窗中,專案 名稱輸入 get-started-debugging。 然後選取下一步。

  5. 在 「附加資訊」 視窗中,確保 .NET 10.0 為 框架 被選取,然後選擇 建立。

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

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

  3. 在 「建立新專案 」視窗的搜尋框中,輸入 控制台。 接下來,從 [語言] 清單中選擇 [Visual Basic ],然後從 [平臺] 清單中選擇 [Windows ]。

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

    截圖顯示在 Visual Studio 2022 中「建立新專案」視窗,搜尋框中「console」,語言與平台篩選器選擇「Visual Basic」和「Windows」,並選擇 Console App 專案範本。

    備註

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

  4. 在 「配置你的新專案 」視窗中,專案 名稱輸入 get-started-debugging。 然後選取下一步。

  5. 在 「附加資訊 」視窗中,確保 .NET 8.0 為 框架選擇,然後選擇 「建立」。

Visual Studio 會開啟您的新專案。

建立應用程式

在 Program.vb中,將所有預設程式碼替換為以下程式碼:

Imports System

Class ArrayExample
  Public Shared Sub Main()
    Dim letters As Char() = {"f"c, "r"c, "e"c, "d"c, " "c, "s"c, "m"c, "i"c, "t"c, "h"c}
    Dim name As String = ""
    Dim a As Integer() = New Integer(9) {}

    For i As Integer = 0 To letters.Length - 1
      name += letters(i)
      a(i) = i + 1
      SendMessage(name, a(i))
    Next

    Console.ReadKey()
  End Sub

  Private Shared Sub SendMessage(ByVal name As String, ByVal msg As Integer)
    Console.WriteLine("Hello, " & name & "! Count to " & msg)
  End Sub
End Class

啟動偵錯工具!

  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. 在For函數的Main迴圈中,按一下以下程式碼行的左邊距來設定中斷點:

    name += letters(i)

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

    斷點是可靠偵錯的最基本功能之一。 斷點會表示 Visual Studio 暫停你正在運行的程式碼的位置。 暫停時,你可以觀察變數的值或記憶體的行為。 你可以看到某個程式碼分支是否執行。

  2. 按 F5 (除錯 > 開始除錯)或除錯工具列中的 開始除錯 按鈕。 應用程式啟動後,除錯器會跑到你設定斷點的程式碼行。

    螢幕擷取畫面顯示 Visual Studio Code 編輯器視窗,執行已停止在中斷點。

    黃色箭頭代表除錯器暫停的語句,同時也在同一點暫停應用程式執行。 這句話尚未執行。

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

    當您知道要詳細檢查的程式碼行或程式碼區段時,中斷點是一項有用的功能。 關於不同斷點類型的資訊,請參見 使用斷點。

本文使用鍵盤快捷鍵,因為這是快速執行除錯器應用程式的好方法。 它以括號內顯示等效指令,例如選單指令。

  1. 當程式碼執行在For迴圈中的Main方法裡暫停時,請按 F11 (或選擇 [偵錯>逐步執行] )兩次,以前進至SendMessage方法呼叫。

    按兩次 F11 後,您應該會看到以下程式碼行:

    SendMessage(name, a(i))

  2. 再按一次 F11 以進入該 SendMessage 方法。

    黃色指標進入了SendMessage方法。

    螢幕截圖顯示 Visual Studio Code 編輯器中的偵錯會話,在執行完 'SendMessage' 方法後暫停。

    F11 是 Step Into 指令。 它會一步步推進應用程式執行。 F11 是最詳細地檢查執行流程的好方法。 根據預設,調試程式會略過非用戶程序代碼。 如需詳細資訊,請參閱 Just My Code。

    假設你檢查完 SendMessage 方法,想退出方法但繼續待在除錯器裡。 您可以使用「 單步出去 」指令來執行此動作。

  3. 按 Shift + F11 (或 除錯 > 步出)。

    此指令會恢復應用程式的執行,並繼續執行除錯器,直至返回當前的方法或函式。

    您應該回到For方法的Main迴圈中,在呼叫SendMessage方法時暫停。

  4. 按 F11 數次,直到您再次回到 SendMessage 方法呼叫處。

  5. 當程式碼執行在方法呼叫時暫停時,請按 F10 (或選擇 [偵錯 > 逐步執行] ) 一次。

    螢幕擷取畫面顯示 Visual Studio Code 編輯器中的偵錯會話,在執行「SendMessage」方法呼叫後暫停。

    這次除錯器沒有介入 SendMessage 這個方法。 F10 推進除錯器,卻不介入應用程式程式碼中的函式或方法。 程式碼仍然執行。 在方法呼叫時按F10而非F11,您跳過了實作程式碼。 如需瞭解不同方式在程式代碼中移動的詳細資訊,請參閱 在偵錯器中瀏覽程式碼。

  1. 按 F5 再次前進至岔斷點。

  2. 在程式碼編輯器中,向下捲動,然後將滑鼠停留在Console.WriteLine方法內的SendMessage方法上,直到出現綠色的按一下執行按鈕。 按鈕的工具提示顯示 執行到這裡。

    螢幕擷取畫面顯示 [執行以按一下] 按鈕及工具提示在程式碼編輯器視窗左側被醒目提示。

  3. 選取 [執行以按一下 ] 按鈕。

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

    使用此按鈕類似於設定暫時岔斷點。 Run to Click 很方便,可以在可見的應用程式程式碼區域內快速移動,你可以在任何開啟的檔案中選擇。

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

要重新啟動應用程式,請按 Ctrl + Shift F5 + 鍵組合。 這比停止應用程式再重新啟動除錯器節省了時間。 偵錯工具會在程式碼執行到第一個斷點時暫停。

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

使用數據提示檢查變數

除錯器有功能可以讓你檢查變數。 有不同的方法可以檢查變數。 通常,當您嘗試偵錯問題時,您會嘗試找出變數是否儲存了您預期它們在特定時間具有的值。

  1. 當程式碼執行暫停在 name += letters[i] 敘述時,將滑鼠游標懸停在 letters 變數上。 你看到它的預設值,也就是陣列中第一個元素的值。 "f"c

  2. 接著,將滑鼠移到變 name 數上以查看其當前值,一個空字串。

  3. 按 F5 (或 [偵錯>繼續]) 幾次,反覆查看迴圈數次 For ,在中斷點再次暫停,每次將滑鼠停留在變數上 name 以檢查其值。

    螢幕擷圖顯示在程式碼編輯器中偵錯執行停止,名為 name 的變數被醒目提示,資料提示顯示其值。

    變數的值會隨著 For 迴圈的每個反覆運算而變更,其中顯示 f的值、fr、fre等等。

    通常,除錯程式碼時,你會想要一個快速檢查變數屬性值的方法,看看它們是否儲存了你預期要儲存的值。 資料提示是個不錯的做法。

使用 [自動變數] 和 [局部變數] 視窗檢查變數

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

    如果它已關閉,請在偵錯器中暫停程式碼執行時,選擇 Debug>Windows>Autos 以開啟它。

    在「 自動」 視窗中,您會看到變數及其目前值。 自動視窗顯示當前行或前一行所使用的所有變數。 請查閱文件中語言特定的行為。

  2. 接下來,在「自動」視窗旁邊的標籤中查看「局部」視窗。

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

    螢幕擷取畫面顯示「區域變數」視窗,其中「字母」變數已展開,以顯示其所包含元素的值和類型。

    [局部變數] 視窗會顯示目前 範圍中的變數,也就是目前的執行內容。

設置手錶

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

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

    預設情況下, 監看視窗 會在程式碼編輯器底部開啟。

  2. 現在您已經對 name 變數設定監看,請逐步執行代碼,觀察 name 變數的值會隨著每次 for 迴圈迭代而變化。

    不同於其他變數視窗,監看 視窗一律會顯示您正在監看的變數。 超出範圍的變數會顯示為無法使用。

如需 監看 視窗的詳細資訊,請參閱 使用監看視窗進行監看變數。

檢查呼叫堆疊

  1. 執行在 For 迴圈中的程式暫停時,請選取 呼叫堆疊 視窗,該視窗會預設開啟於右下窗格中。

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

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

    螢幕擷取畫面顯示 Visual Studio 的呼叫堆疊視窗,其中最上行以醒目顯示 SendMessage 方法呼叫。

    呼叫堆疊 視窗會顯示呼叫方法和函式的順序。 最上方的那一行會顯示目前功能。 在這個例子中,它是 SendMessage 方法。 第二行顯示SendMessage從Main方法呼叫,然後依此類推。

    備註

    呼叫堆疊視窗類似某些程式工具如 Eclipse 的除錯視角。

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

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

    您也可以使用 呼叫堆疊 視窗中的右鍵選單來執行其他動作。 例如,您可以將中斷點插入指定的函式、使用 [執行至游標] 來推進偵錯程序,然後檢查原始程式碼。 如需詳細資訊,請參閱 如何:檢查呼叫堆疊。

變更執行流程

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

  2. 在 SendMessage 方法呼叫時,除錯器已暫停,使用滑鼠抓取左側邊距的黃色箭頭或執行點,將其向上拖曳一行至 Console.WriteLine 語句。

  3. 按 F11。

    除錯器會重新執行該 Console.WriteLine 方法。 你會在主控台視窗輸出中看到這個動作。

    透過改變執行流程,你可以測試不同的程式碼執行路徑,或在不重新啟動除錯器的情況下重執行程式碼。

    警告

    通常你必須小心使用這個功能。 工具提示中有警告。 您可能還會看到其他警告。 移動指標無法將應用程式還原到較早的應用程式狀態。

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

    恭喜您完成本教學課程!

在這個教學中,你學會了如何啟動除錯器、逐步執行程式碼,以及檢查變數。 您可能想要高層次地概觀偵錯工具的功能,並查看詳細資訊的連結。