本文會在逐步解說中介紹 Visual Studio 偵錯工具的功能。 如果您想概覽除錯器的功能,請參閱 初探除錯器。 當您 偵錯應用程式時,通常表示您正在執行附加偵錯工具的應用程式。 當您執行這項工作時,偵錯工具會提供許多方式來查看程式碼在執行時正在執行的動作。 您可以逐步執行程式碼並查看儲存在變數中的值,您可以設定變數的監看以查看值何時變更,您可以檢查程式碼的執行路徑,查看程式碼分支是否正在執行,等等。 如果這是您第一次嘗試偵錯程式碼,建議您在閱讀本文之前,先閱讀適合絕對初學者的偵錯指南。
雖然示範應用程式是 Visual Basic,但大部分的功能都適用於 C#、C++、F#、Python、JavaScript 和 Visual Studio 支援的其他語言 (F# 不支援編輯並繼續。F# 和 JavaScript 不支援 [自動] 視窗)。 螢幕擷取畫面是 Visual Basic 格式。
在本教學課程中,您將:
- 啟動偵錯工具並命中中斷點。
- 了解在調試程式中逐步執行程式碼的命令
- 檢查數據提示和調試程序視窗中的變數
- 檢查呼叫堆疊
先決條件
您必須安裝 Visual Studio 2019 和 .NET Core 跨平台開發 工作負載。
如果您尚未安裝 Visual Studio,請移至 Visual Studio 下載 頁面免費安裝。
如果您需要安裝工作負載,但已經有 Visual Studio,請移至 [工具>] [取得工具和功能...],這會開啟 Visual Studio 安裝程式。 Visual Studio 安裝程式隨即啟動。 選擇 [.NET 桌面開發] 工作負載,然後選擇 [修改]。
建立專案
首先,您會建立 .NET Core 主控台應用程式專案。 這個專案類型包含您需要的所有範本檔案,在您新增任何內容之前就已經準備好了!
開啟 Visual Studio。 如果開始視窗未開啟,請選取 [ 檔案>開始視窗]。
在 [開始] 視窗上,選取 [建立新專案]。
在 [建立新專案 ] 視窗中,在搜尋方塊中輸入 console 。 接下來,從 [語言] 清單中選擇 [Visual Basic ],然後從 [平臺] 清單中選擇 [Windows ]。
套用語言和平台篩選之後,請選擇 .NET Core 的 主控台應用程式 範本,然後選取 [ 下一步]。
備註
如果您沒有看到 主控台應用程式 樣本,您可以從 [建立新的 專案] 視窗 安裝它。 在 [ 找不到您要尋找的內容?] 訊息中,選擇 [安裝更多工具和功能] 連結。 然後,在 Visual Studio 安裝程式中,選擇 .NET 桌面開發 工作負載。
在 [設定您的新專案] 視窗中,在 [專案名稱] 方塊中輸入 get-started-debugging。 然後選取下一步。
在 [其他資訊] 視窗中,確定已在 [架構]下拉式功能表中選取 .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
啟動偵錯工具!
按 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在本教學課程中,您會使用偵錯工具仔細檢視此應用程式,並瞭解偵錯工具功能。
按 (Shift + F5) 停止偵錯工具,或選取偵錯工具列中的紅色 [停止偵錯 ] 按鈕。
在主控台視窗中,按一個鍵關閉主控台視窗。
設定斷點並啟動調試程式
在
For函數的Main迴圈中,按一下以下程式碼行的左邊距來設定中斷點:name += letters(i)您設定中斷點的位置會出現一個紅色圓圈。
斷點是可靠偵錯的最基本功能之一。 斷點表示 Visual Studio 應該暫停正在執行的程式碼的位置,以便查看變數的值、記憶體的行為,或者確認程式碼的某個分支是否正在執行。
按 F5 (偵錯 > 開始偵錯) 或偵錯工具列中的 [ 開始偵錯 ] 按鈕,應用程式會啟動,偵錯工具會執行至您設定中斷點的程式碼行。
黃色箭號代表偵錯工具暫停的陳述式,也會在同一點暫停應用程式執行 (此陳述式尚未執行) 。
如果應用程式尚未執行, F5 會啟動偵錯工具,並在第一個中斷點停止。 否則, F5 會繼續將應用程式執行至下一個中斷點。
當您知道要詳細檢查的程式碼行或程式碼區段時,中斷點是一項有用的功能。 如需您可以設定的不同中斷點類型 (例如條件式中斷點) 的相關資訊,請參閱 使用中斷點。
使用步驟命令在調試程式中巡覽程序代碼
在本文中,我們會使用鍵盤快速鍵,因為這是在偵錯工具中快速執行應用程式的好方法 (對等命令,例如功能表命令會顯示在括弧中)。
當程式碼執行在
For迴圈中的Main方法裡暫停時,請按 F11 (或選擇 [偵錯>逐步執行] )兩次,以前進至SendMessage方法呼叫。按兩次 F11 後,您應該會看到以下程式碼行:
SendMessage(name, a(i))再按一次 F11 以進入該
SendMessage方法。黃色指標進入了
SendMessage方法。
F11 是 逐步執行(Step Into) 命令,將應用程式逐個陳述式地向前執行。 F11 是最詳細地檢查執行流程的好方法。 (為了更快地完成程式碼,我們還向您展示了一些其他選項。根據預設,偵錯工具會略過非使用者程式碼 (如果您想要更多詳細資料,請參閱 只我的程式碼) 。
假設您已完成檢查
SendMessage方法,而且您想要退出該方法,但留在偵錯工具中。 您可以使用「 單步出去 」指令來執行此動作。按 Shift + F11 (或 除錯 > 步出)。
此命令會恢復應用程式的執行(並推進調試進程),直到當前方法或函數返回為止。
您應該回到
For方法的Main迴圈中,在呼叫SendMessage方法時暫停。按 F11 數次,直到您再次回到
SendMessage方法呼叫處。當程式碼執行在方法呼叫時暫停時,請按 F10 (或選擇 [偵錯 > 逐步執行] ) 一次。
螢幕擷取畫面顯示 Visual Studio Code 編輯器中的偵錯會話,在執行「SendMessage」方法呼叫後暫停。
請注意,此時偵錯器不會進入
SendMessage方法。 F10 會讓偵錯工具前進,不進入程式碼中的函式或方法,程式碼仍會執行。 通過在方法調用時按SendMessage(而不是F11),我們跳過了SendMessage(也許我們現在對此不感興趣)。 如需瞭解不同方式在程式代碼中移動的詳細資訊,請參閱 在偵錯器中瀏覽程式碼。
使用 Run to Click 瀏覽程式碼
按 F5 再次前進至岔斷點。
在程式碼編輯器中,向下捲動,然後將滑鼠停留在
Console.WriteLine方法內的SendMessage方法上,直到出現綠色的按一下執行按鈕。 按鈕的工具提示會顯示「執行程序到這裡」。
選取 [執行以按一下 ] 按鈕。
偵錯工具會前進至方法
Console.WriteLine。使用此按鈕類似於設定暫時岔斷點。 Run to Click 方便在應用程序代碼的可見區域內快速移動(您可以在任何打開的文件中進行選擇)。
快速重新啟動您的應用程式
若要重新啟動您的應用程式,請按 Ctrl + Shift + F5 組合鍵,與停止應用程式並重新啟動偵錯器相比,它可以節省時間。 偵錯工具會在程式碼執行到第一個斷點時暫停。
偵錯工具會在您先前在迴圈內 For 設定的中斷點再次停止。
使用數據提示檢查變數
可讓您檢查變數的功能是偵錯工具最有用的功能之一,而且有不同的方法可以執行此動作。 通常,當您嘗試偵錯問題時,您會嘗試找出變數是否儲存了您預期它們在特定時間具有的值。
當程式碼執行在陳述式上
name += letters[i]暫停時,將滑鼠停留在變數上letters,您會看到其預設值,即陣列中第一個元素的值。"f"c接下來,將滑鼠懸停在變數
name上,您會看到其目前值,即空字串。按 F5 (或 [偵錯>繼續]) 幾次,反覆查看迴圈數次
For,在中斷點再次暫停,每次將滑鼠停留在變數上name以檢查其值。
變數的值會隨著
For迴圈的每個反覆運算而變更,其中顯示f的值、fr、fre等等。通常,在偵錯時,您想要一種快速的方法來檢查變數的屬性值,以查看它們是否儲存了您預期它們要儲存的值,而資料提示是執行此操作的好方法。
使用 [自動變數] 和 [局部變數] 視窗檢查變數
查看程式碼編輯器底部的 [自動] 視窗。
如果它已關閉,請在偵錯器中暫停程式碼執行時,選擇 Debug>Windows>Autos 以開啟它。
在「 自動」 視窗中,您會看到變數及其目前值。 Autos 視窗會顯示目前行或前一行上使用的所有變數(請查看文件資料以了解語言特定行為)。
接下來,在「自動」視窗旁邊的標籤中查看「局部」視窗。
展開
letters變數以顯示其包含的元素。
[局部變數] 視窗會顯示目前 範圍中的變數,也就是目前的執行內容。
設置手錶
您可以指定在逐步執行程式碼時要留意的變數或運算式,方法是將變數或運算式新增至 [ 監看式 ] 視窗。
當偵錯工具暫停時,以滑鼠右鍵按一下
name變數,然後選擇 [新增監看式]。預設情況下, 監看視窗 會在程式碼編輯器底部開啟。
現在您已經對
name變數設定監看,請逐步執行代碼,觀察name變數的值會隨著每次for迴圈迭代而變化。不同於其他變數視窗,監看 視窗一律會顯示您正在監看的變數。 超出範圍的變數會顯示為無法使用。
如需 監看 視窗的詳細資訊,請參閱 使用監看視窗進行監看變數。
檢查呼叫堆疊
執行在
For迴圈中的程式暫停時,請選取 呼叫堆疊 視窗,該視窗會預設開啟於右下窗格中。如果它已關閉,請選擇 [偵錯>Windows>呼叫堆疊] ,在偵錯工具中暫停程式碼執行時開啟它。
按 F11 幾次,直到偵錯工具在
SendMessage方法中暫停為止。 查看 [呼叫堆疊 ] 視窗。
呼叫堆疊 視窗會顯示呼叫方法和函式的順序。 頂行顯示當前函數(
SendMessage此應用程序中的方法)。 第二行顯示SendMessage從Main方法呼叫,然後依此類推。備註
呼叫堆疊 視窗類似於像 Eclipse 等部分 IDE 中的偵錯透視圖。
呼叫堆疊是檢查及瞭解應用程式執行流程的好方法。
您可以按兩下一行程式碼來查看該原始程式碼,這也會變更偵錯工具檢查的目前範圍。 此動作不會推進偵錯工具。
您也可以使用 呼叫堆疊 視窗中的右鍵選單來執行其他動作。 例如,您可以將中斷點插入指定的函式、使用 [執行至游標] 來推進偵錯程序,然後檢查原始程式碼。 如需詳細資訊,請參閱 如何:檢查呼叫堆疊。
變更執行流程
按 F11 兩次以執行
Console.WriteLine方法。偵錯工具在
SendMessage方法呼叫中暫停時,使用滑鼠拖曳位於左側欄位的黃色箭頭或指令執行指標,然後將指標向上移動一行至Console.WriteLine陳述式。按 F11。
偵錯工具會重新執行
Console.WriteLine方法 (您會在主控台視窗輸出中看到此動作)。藉由變更執行流程,您可以執行測試不同程式碼執行路徑或重新執行程式碼等動作,而不需重新啟動調試程式。
警告
您通常必須小心這項功能,並在工具提示中看到警告。 您可能還會看到其他警告。 移動指標無法將應用程式還原為先前的應用程式狀態。
按 F5 繼續執行應用程式。
恭喜您完成本教學課程!
後續步驟
在本教學課程中,您已瞭解如何啟動偵錯工具、逐步執行程式碼,以及檢查變數。 您可能想要高層次地概觀偵錯工具的功能,並查看詳細資訊的連結。