分享方式:


在 Visual Studio 中使用 GitHub Copilot 對您的應用程式進行偵錯

在本文中,您將了解如何使用 GitHub Copilot 更有效率地偵錯。 Copilot 可以提供程式碼修正,以及程式碼運作方式的深入分析和說明。 它有助於提出錯誤修正建議,並說明例外狀況等事項。 Copilot 瞭解呼叫堆疊、框架、變數名稱和值。 因此,您可以與可感知偵錯工具的 AI 互動,以詢問與程式碼相關的詳細問題,以及一般偵錯問題。

此外,Copilot 為一些目標案例提供更精確的協助,包括:

  • 例外狀況
  • 變數
  • 鎖死
  • 自動深入解析 CPU 使用量

若要在這些案例偵錯時取得 AI 協助,請尋找詢問 Copilot [詢問 Copilot] 按鈕的螢幕擷取畫面。按鈕。 在這些案例中,Copilot 已知道問題的內容。 例如,它知道目前呼叫堆疊、您詢問的程式代碼行,以及例外狀況的名稱 (如果有發生),因此您不需要在聊天中自行提供內容。 Copilot 也提供使用條件中斷點和追蹤點的建議。

如需 Visual Studio 中 GitHub Copilot 完成的詳細資訊,請參閱關於 Visual Studio 的 GitHub Copilot 完成

必要條件

若要開始,您需要:

取得 AI 協助以偵錯應用程式

下列簡單範例示範如何使用內嵌聊天檢視取得 AI 協助。

注意

您也可以透過選擇檢視> GitHub Copilot 聊天,使用單獨的 [聊天] 視窗來取得協助。 有關詳細資訊,請參閱什麼是適用於 Visual Studio 的 GitHub Copilot Chat 延伸模組?

啟動偵錯工作階段

  1. 在 Visual Studio 中,建立新的 C# 主控台應用程式。

    在開始視窗中,選擇 [建立新專案]。 在搜尋方塊中輸入主控台,選擇 C# 作為語言,然後選擇 NET 的主控台應用程式。 選擇下一步。 輸入專案名稱,例如 ConsoleApp_Copilot,然後選擇下一步

    選擇建議的目標 Framework 或 .NET 8,然後選擇 [建立]

    如果您未看到適用於 .NET 的 [主控台應用程式] 專案範本,請前往 [工具]>[取得工具與功能...],以開啟 Visual Studio 安裝程式。 選擇 [.NET 桌面開發] 工作負載,然後選擇 [修改]

    Visual Studio 隨即建立主控台專案,並出現在右窗格的 [方案總管] 中。

  2. 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");
        }
    }
    
  3. 以滑鼠右鍵按一下以下陳述式,並選擇中斷點>插入中斷點

    int value = Int32.Parse(args[0]);
    
  4. F5,或從偵錯選單中選擇開始偵錯

    應用程式會在中斷點暫停。 自動變數視窗顯示 args 變數的值為 string[0]

    [自動變數] 視窗的螢幕擷取畫面。

  5. 以滑鼠右鍵按一下程式碼,然後選擇詢問 Copilot 以開啟內嵌聊天檢視。

    提示

    或者,您可以在 [自動變數] 或 [區域變數] 視窗中,或是在資料提示中,以滑鼠右鍵按一下變數,然後選擇 [詢問 Copilot]。 這樣可以為 Copilot 提供變數名稱和內容,因此您不需要在聊天中自行提供內容。

  6. 在內嵌聊天檢視中輸入下列問題:

    Why does the args variable have a value of string[0]?
    

    內嵌 Copilot 聊天的螢幕擷取畫面。

    當您按下 Enter 鍵時,Copilot 會根據其對程式碼的理解來提供答案。 (您得到的回應可能與此處顯示的不同。)

    Copilot 已回答問題的螢幕擷取畫面。

    如果 Copilot 有建議的程式碼修正,它會向您顯示。 如果沒有,您可以向 Copilot 詢問建議的程式碼。

    提示

    在內嵌聊天中,使用「#」符號,然後從下拉式清單選取,以便於問題中參考特定資訊時,將特定資訊交給 Copilot。 例如,如果您選取部分程式代碼,然後輸入 #,您可以從 # 下拉式清單選擇該選取範圍。 您也可以使用「#」符號來參考出現在下拉式清單中的 IDE 功能,例如區域視窗。

  7. 在此範例中,捲動到 Copilot 答案的結尾,然後選擇內嵌聊天視窗結尾的後續問題:「當沒有引數傳遞給程式時,我該如何處理?」

    Copilot 後續問題的螢幕擷取畫面。

    Copilot 會顯示程式碼修正建議。

    Copilot 建議修正的螢幕擷取畫面。

    如果您想要套用程式碼修正,請選擇接受

  8. 選擇取消,以便在下一節中繼續學習 Copilot 的其他功能。

取得例外狀況的 AI 協助

下列簡單範例示範如何在遇到例外狀況時取得 AI 協助,以及如何根據 AI 建議的修正快速更新程式碼。

啟動偵錯工作階段

  • 使用相同範例應用程式在偵錯工具中暫停時,按 F11偵錯>逐步執行以執行目前陳述式。

    發生 IndexOutOfRangeException 且應用程式暫停,顯示例外狀況。

    若要取得 AI 協助來處理例外狀況,請繼續進行下一節。

要求 AI 協助

  1. 當應用程式因例外狀況而暫停時,選取詢問 Copilot 按鈕。

    例外狀況中 [詢問 Copilot] 按鈕的螢幕擷取畫面。

    如果尚未開啟,[Copilot 聊天] 視窗隨即出現,其中提供對錯誤的評估,以及發生原因。 在此範例中,Copilot 會識別建議的程式碼修正、用於複製程式碼的按鈕,以及用於程式碼修正的預覽按鈕。

    如果您對例外狀況有疑問,請在 [詢問 Copilot] 文字方塊中詢問。

  2. 選取預覽按鈕。

    [Copilot 聊天] 視窗中 [預覽] 按鈕的螢幕擷取畫面。

    Visual Studio 會顯示程式碼預覽,其中包含建議的修正。

  3. 查看建議的修正,並選擇接受以套用程式碼建議。

    Visual Studio 中程式碼預覽的螢幕擷取畫面。

  4. 重新啟動偵錯工具。

    這一次,沒有出現任何例外狀況。 此問題已修正!

取得條件中斷點和追蹤點的 AI 協助

Copilot 會針對程式碼特有的條件中斷點追蹤點提供建議。

在此範例中,我們會針對條件中斷點顯示 AI 建議。 針對追蹤點,AI 協助會以相同的方式運作。

  1. 按一下目前的中斷點來移除之,或以滑鼠右鍵按一下並選擇刪除中斷點

  2. 取代下列程式碼:

    names.Add("Major Major Major");
    

    取代為這個:

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. names.Add("Name: " + item) 陳述式左側,以滑鼠右鍵按一下裝訂邊,然後選擇插入條件中斷點

  4. 選取運算式欄位,Copilot 會開始處理建議。

    Copilot 處理條件中斷點建議的螢幕擷取畫面。

  5. 出現建議時,請選擇其中一個建議,例如 item == "John"。 編輯建議,讓名稱為 Fred

    條件中斷點的 Copilot 建議之螢幕擷取畫面。

  6. 若要測試條件運算式:

    1. 在「方案總管」中,以滑鼠右鍵按一下 ConsoleApp_Copilot 專案,然後選擇屬性

    2. 選取偵錯>一般>開啟偵錯啟動設定檔 UI

    3. 命令列引數欄位中,在三個不同的明細行上輸入 5 Fred Joe

      輸入專案的命令列引數之螢幕擷取畫面。

    4. 重新啟動偵錯工具。

    當偵錯工具在中斷點暫停時,請檢查 item 的值,並驗證目前的值為 Fred

在 IEnumerable 表格式可視化檢視中取得 AI 協助

如需 IEnumerable 表格式可視化檢視的 AI 協助,請參閱 修改可視化檢視表達式

取得 AI 協助以進行自動深入解析

除了互動式偵錯協助之外,Copilot 還提供 CPU 使用量自動深入解析中的詳細資訊。 它提供與一組特定效能深入解析相關的資訊和深入解析。 使用 Copilot,詢問您程式碼中已識別最忙碌路徑上的函式相關問題,這可協助您產生更有效率或符合成本效益的程式碼。

即使未識別特定的效能深入解析,[詢問 Copilot] 按鈕仍會出現。 選取 [詢問 Copilot] 從 Copilot 學習並開始提出問題。

搭配 CPU 使用率使用 Copilot 的動畫。