分享方式:


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

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

此外,Copilot 對於某些特定情境提供更精確的協助,例如例外狀況,以及 中所述的 AI 增強型情境,這些情境均用於偵錯。 在大部分的案例中,尋找 [詢問 Copilot] 按鈕 [詢問 Copilot] 按鈕的螢幕快照。 按鈕。 在這些案例中,Copilot 已知道問題的內容。

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

先決條件

若要開始使用,您需要:

使用 Copilot 來調試

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

備註

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

啟動偵錯工作階段

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

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

    選擇建議的目標架構或 .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 的其他功能。

使用 Copilot 偵錯例外狀況

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

啟動偵錯工作階段

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

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

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

要求 AI 協助

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

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

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

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

  2. 選取預覽按鈕。

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

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

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

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

  4. 重新啟動調試程式。

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

使用條件斷點和追蹤點取得建議

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

AI 增強型案例

Copilot 瞭解呼叫堆疊、框架、變數名稱和值。 因此,您可以與可感知偵錯工具的 AI 互動,以詢問與程式碼相關的詳細問題,以及一般偵錯問題。

此外,Copilot 會針對某些目標案例提供更精確的說明,例如下表中所述的案例。

功能或案例 連結
例外 請參閱本文中的 使用 Copilot 對例外狀況進行偵錯。 例外狀況的協助還包括死結偵測錯誤的協助。
變數 請參閱本文中第 段落的,了解如何使用 Copilot 進行偵錯。
條件斷點和追蹤點 請參閱本文中的 ,了解條件斷點與追蹤點建議
快速動作 (燈泡) 請參閱 如何使用 AI 協助進行快速操作
IEnumerable 表格式可視化工具 請參閱 修改視覺化表達式
內嵌傳回值 請參閱 檢視方法呼叫的傳回值
摘要線程描述 請參閱 線程檢視 (平行堆疊)
分析的自動深入解析 請參閱 透過自動分析取得 AI 協助

在大部分的案例中,您藉由使用 [Ask Copilot] 按鈕的螢幕快照取得有針對性的協助。[ 按鈕]。 Copilot 已經知道問題的內容。 例如,它知道目前呼叫堆疊、您詢問的程式代碼行,以及例外狀況的名稱 (如果有發生),因此您不需要在聊天中自行提供內容。 Copilot 也提供使用條件中斷點和追蹤點的建議。