在 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。 註冊並利用 AI 以更快且更有效率地撰寫程式代碼。在 Visual Studio 中 GitHub Copilot
在 Visual Studio 中 GitHub Copilot Chat
備註
如果您在安裝擴充功能之後遇到驗證問題,請參閱 針對 GitHub Copilot Chat的驗證問題進行疑難解答。
使用 Copilot 來調試
下列簡單範例示範如何使用內嵌聊天檢視取得 AI 協助。
備註
您也可以透過選擇檢視> GitHub Copilot 聊天,使用單獨的 [聊天] 視窗來取得協助。 有關詳細資訊,請參閱什麼是適用於 Visual Studio 的 GitHub Copilot Chat 延伸模組?。
啟動偵錯工作階段
在 Visual Studio 中,建立新的 C# 主控台應用程式。
在 [開始] 視窗中,選擇 建立新專案。 在搜尋方塊中輸入主控台,選擇 C# 作為語言,然後選擇 NET 的主控台應用程式。 選擇 下一步。 輸入專案名稱,例如 ConsoleApp_Copilot,然後選擇下一步。
選擇建議的目標架構或 .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 的其他功能。
使用 Copilot 偵錯例外狀況
下列簡單範例示範如何在遇到例外狀況時取得 AI 協助,以及如何根據 AI 建議的修正快速更新程式碼。
啟動偵錯工作階段
使用相同範例應用程式在偵錯工具中暫停時,按 F11 或偵錯>逐步執行以執行目前陳述式。
發生
IndexOutOfRangeException
且應用程式暫停,顯示例外狀況。若要取得 AI 協助來處理例外狀況,請繼續進行下一節。
要求 AI 協助
當應用程式因例外狀況而暫停時,選取詢問 Copilot 按鈕。
如果尚未開啟,[Copilot 聊天] 視窗隨即出現,其中提供對錯誤的評估,以及發生原因。 在此範例中,Copilot 會識別建議的程式碼修正、用於複製程式碼的按鈕,以及用於程式碼修正的預覽按鈕。
如果您對例外狀況有疑問,請在 [詢問 Copilot] 文字方塊中詢問。
選取預覽按鈕。
Visual Studio 會顯示程式碼預覽,其中包含建議的修正。
查看建議的修正,並選擇接受以套用程式碼建議。
重新啟動調試程式。
這一次,沒有出現任何例外狀況。 此問題已修正!
使用條件斷點和追蹤點取得建議
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
。
AI 增強型案例
Copilot 瞭解呼叫堆疊、框架、變數名稱和值。 因此,您可以與可感知偵錯工具的 AI 互動,以詢問與程式碼相關的詳細問題,以及一般偵錯問題。
此外,Copilot 會針對某些目標案例提供更精確的說明,例如下表中所述的案例。
功能或案例 | 連結 |
---|---|
例外 | 請參閱本文中的 使用 Copilot 對例外狀況進行偵錯。 例外狀況的協助還包括死結偵測錯誤的協助。 |
變數 | 請參閱本文中第 段落的,了解如何使用 Copilot 進行偵錯。 |
條件斷點和追蹤點 | 請參閱本文中的 ,了解條件斷點與追蹤點建議。 |
快速動作 (燈泡) | 請參閱 如何使用 AI 協助進行快速操作。 |
IEnumerable 表格式可視化工具 | 請參閱 修改視覺化表達式。 |
內嵌傳回值 | 請參閱 檢視方法呼叫的傳回值。 |
摘要線程描述 | 請參閱 線程檢視 (平行堆疊)。 |
分析的自動深入解析 | 請參閱 透過自動分析取得 AI 協助。 |
在大部分的案例中,您藉由使用 [Ask Copilot 按鈕]。 Copilot 已經知道問題的內容。 例如,它知道目前呼叫堆疊、您詢問的程式代碼行,以及例外狀況的名稱 (如果有發生),因此您不需要在聊天中自行提供內容。 Copilot 也提供使用條件中斷點和追蹤點的建議。