在 Visual Studio 中使用 GitHub Copilot 對您的應用程式進行偵錯
在本文中,您將了解如何使用 GitHub Copilot 更有效率地偵錯。 Copilot 可以提供程式碼修正,以及程式碼運作方式的深入分析和說明。 它有助於提出錯誤修正建議,並說明例外狀況等事項。 Copilot 瞭解呼叫堆疊、框架、變數名稱和值。 因此,您可以與可感知偵錯工具的 AI 互動,以詢問與程式碼相關的詳細問題,以及一般偵錯問題。
此外,Copilot 為某些目標案例提供更精確的說明,例如:
- 例外狀況
- 變數
- 鎖死
- 快速動作 (燈泡)
若要在這些案例偵錯時取得 AI 協助,請尋找詢問 Copilot 按鈕。 在這些案例中,Copilot 已知道問題的內容。 例如,它知道目前呼叫堆疊、您詢問的程式代碼行,以及例外狀況的名稱 (如果有發生),因此您不需要在聊天中自行提供內容。 Copilot 也提供使用條件中斷點和追蹤點的建議。
如需 Visual Studio 中 GitHub Copilot 完成的詳細資訊,請參閱關於 Visual Studio 的 GitHub Copilot 完成。
必要條件
若要開始,您需要:
Visual Studio 2022 版本 17.8 或更新版本
Visual Studio 中的 GitHub Copilot
-
注意
如果您在安裝延伸模組之後遇到驗證問題,請參閱針對 GitHub Copilot Chat 的驗證問題進行疑難排解 (英文)。
取得 AI 協助以偵錯應用程式
下列簡單範例示範如何使用內嵌聊天檢視取得 AI 協助。
注意
您也可以透過選擇檢視> GitHub Copilot 聊天,使用單獨的 [聊天] 視窗來取得協助。 有關詳細資訊,請參閱什麼是適用於 Visual Studio 的 GitHub Copilot Chat 延伸模組?。
啟動偵錯工作階段
在 Visual Studio 中,建立新的 C# 主控台應用程式。
在開始視窗中,選擇 [建立新專案]。 在搜尋方塊中輸入主控台,選擇 C# 作為語言,然後選擇 NET 的主控台應用程式。 選擇下一步。 輸入專案名稱,例如 ConsoleApp_Copilot,然後選擇下一步。
選擇建議的目標 Framework 或 .NET 8,然後選擇 [建立]。
如果您未看到適用於 .NET 的 [主控台應用程式] 專案範本,請前往 [工具]>[取得工具與功能...],以開啟 Visual Studio 安裝程式。 選擇 [.NET 桌面開發] 工作負載,然後選擇 [修改]。
Visual Studio 隨即建立主控台專案,並出現在右窗格的 [方案總管] 中。
將 Program.cs 中的程式碼取代為下列程式碼:
using System; using System.Collections.Generic; public class Example { public static void Main(string[] args) { int value = Int32.Parse(args[0]); List<String> names = null; if (value > 0) names = new List<String>(); names.Add("Major Major Major"); } }
以滑鼠右鍵按一下以下陳述式,並選擇中斷點>插入中斷點。
int value = Int32.Parse(args[0]);
按 F5,或從偵錯選單中選擇開始偵錯。
應用程式會在中斷點暫停。 自動變數視窗顯示 args 變數的值為
string[0]
。以滑鼠右鍵按一下程式碼,然後選擇詢問 Copilot 以開啟內嵌聊天檢視。
提示
或者,您可以在 [自動變數] 或 [區域變數] 視窗中,或是在資料提示中,以滑鼠右鍵按一下變數,然後選擇 [詢問 Copilot]。 這樣可以為 Copilot 提供變數名稱和內容,因此您不需要在聊天中自行提供內容。
在內嵌聊天檢視中輸入下列問題:
Why does the args variable have a value of string[0]?
當您按下 Enter 鍵時,Copilot 會根據其對程式碼的理解來提供答案。 (您得到的回應可能與此處顯示的不同。)
如果 Copilot 有建議的程式碼修正,它會向您顯示。 如果沒有,您可以向 Copilot 詢問建議的程式碼。
提示
在內嵌聊天中,使用「#」符號,然後從下拉式清單選取,以便於問題中參考特定資訊時,將特定資訊交給 Copilot。 例如,如果您選取部分程式代碼,然後輸入 #,您可以從 # 下拉式清單選擇該選取範圍。 您也可以使用「#」符號來參考出現在下拉式清單中的 IDE 功能,例如區域視窗。
在此範例中,捲動到 Copilot 答案的結尾,然後選擇內嵌聊天視窗結尾的後續問題:「當沒有引數傳遞給程式時,我該如何處理?」
Copilot 會顯示程式碼修正建議。
如果您想要套用程式碼修正,請選擇接受。
選擇取消,以便在下一節中繼續學習 Copilot 的其他功能。
取得例外狀況的 AI 協助
下列簡單範例示範如何在遇到例外狀況時取得 AI 協助,以及如何根據 AI 建議的修正快速更新程式碼。
啟動偵錯工作階段
使用相同範例應用程式在偵錯工具中暫停時,按 F11 或偵錯>逐步執行以執行目前陳述式。
發生
IndexOutOfRangeException
且應用程式暫停,顯示例外狀況。若要取得 AI 協助來處理例外狀況,請繼續進行下一節。
要求 AI 協助
當應用程式因例外狀況而暫停時,選取詢問 Copilot 按鈕。
如果尚未開啟,[Copilot 聊天] 視窗隨即出現,其中提供對錯誤的評估,以及發生原因。 在此範例中,Copilot 會識別建議的程式碼修正、用於複製程式碼的按鈕,以及用於程式碼修正的預覽按鈕。
如果您對例外狀況有疑問,請在 [詢問 Copilot] 文字方塊中詢問。
選取預覽按鈕。
Visual Studio 會顯示程式碼預覽,其中包含建議的修正。
查看建議的修正,並選擇接受以套用程式碼建議。
重新啟動偵錯工具。
這一次,沒有出現任何例外狀況。 此問題已修正!
取得條件中斷點和追蹤點的 AI 協助
Copilot 會針對程式碼特有的條件中斷點和追蹤點提供建議。
在此範例中,我們會針對條件中斷點顯示 AI 建議。 針對追蹤點,AI 協助會以相同的方式運作。
按一下目前的中斷點來移除之,或以滑鼠右鍵按一下並選擇刪除中斷點。
取代下列程式碼:
names.Add("Major Major Major");
取代為這個:
// names.Add("Major Major Major"); foreach (var item in args) { names.Add("Name: " + item); }
在
names.Add("Name: " + item)
陳述式左側,以滑鼠右鍵按一下裝訂邊,然後選擇插入條件中斷點。選取運算式欄位,Copilot 會開始處理建議。
出現建議時,請選擇其中一個建議,例如
item == "John"
。 編輯建議,讓名稱為Fred
。若要測試條件運算式:
在「方案總管」中,以滑鼠右鍵按一下 ConsoleApp_Copilot 專案,然後選擇屬性。
選取偵錯>一般>開啟偵錯啟動設定檔 UI。
在命令列引數欄位中,在三個不同的明細行上輸入
5 Fred Joe
。重新啟動偵錯工具。
當偵錯工具在中斷點暫停時,請檢查
item
的值,並驗證目前的值為Fred
。
在 IEnumerable 表格式可視化檢視中取得 AI 協助
如需 IEnumerable 表格式可視化檢視的 AI 協助,請參閱 修改可視化檢視表達式。
取得 AI 協助以進行自動深入解析
除了互動式偵錯協助之外,Copilot 還提供 CPU 使用量自動深入解析中的詳細資訊。 它提供與一組特定效能深入解析相關的資訊和深入解析。 使用 Copilot,詢問您程式碼中已識別最忙碌路徑上的函式相關問題,這可協助您產生更有效率或符合成本效益的程式碼。
即使未識別特定的效能深入解析,[詢問 Copilot] 按鈕仍會出現。 選取 [詢問 Copilot] 從 Copilot 學習並開始提出問題。