在 Visual Studio 中使用 GitHub Copilot 调试应用

本文介绍如何使用 GitHub Copilot 更有效地进行调试。 Copilot 可提供代码修复,以及有关代码工作原理的深入分析和解释。 它有助于提供针对 bug 的建议修复,并解释异常等事项。 Copilot 能够理解调用堆栈、帧、变量名称和值。 因此,你可与调试器感知的 AI 进行交互,从而询问与代码相关的详细问题以及一般的调试问题。

此外,Copilot 可为某些目标场景提供更精确的帮助,其中包括以下内容:

  • 异常
  • CPU 使用情况的自动见解

若要在这些场景中进行调试时获取 AI 帮助,请查找询问 Copilot“询问 Copilot”按钮的屏幕截图。 按钮。 在这些场景中,Copilot 已知问题的上下文。 例如,它知道当前的调用堆栈、要询问的代码行以及异常的名称(如果发生了一个异常),因此无需在聊天中自行提供上下文。

有关 Visual Studio 中的 GitHub Copilot 扩展的详细信息,请参阅关于 Visual Studio 的 GitHub Copilot 扩展

先决条件

要开始,需要:

获取 AI 帮助以调试应用

以下简易示例演示如何使用内联聊天视图获取 AI 帮助。

注意

此外,还可通过选择视图 > GitHub Copilot 聊天以通过单独的聊天窗口来获取帮助。 有关详细信息,请参阅什么是适用于 Visual Studio 的 GitHub Copilot 聊天扩展?

启动调试会话

  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 以打开内联聊天视图。

  6. 在内联聊天视图中键入以下问题:

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

    内联 Copilot 聊天的屏幕截图。

    Enter 时,Copilot 会根据对代码的理解来提供答案。 (你可能会看到不同于此处所示的响应。)

    Copilot 已回答问题的屏幕截图。

    如果 Copilot 为代码提供了建议的修复方法,则会为你显示。 如果没有,则可要求 Copilot 提供代码建议。

  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 还会在 CPU 使用情况自动见解中提供详细信息。 它可提供与一组特定性能见解相关的信息和见解。 使用 Copilot,可询问有关代码中已识别的热路径上的函数的问题,以帮助你生成更高效或更具成本效益的代码。

当 CPU 使用率工具在“顶级见解”部分提供自动见解时,请选择询问 Copilot,以便从 Copilot 中学习并开始提问。

Copilot 和 CPU 使用率搭配使用的动画。