🎀🎀🎀【AI辅助编程系列】🎀🎀🎀
- Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码
- Visual Studio 安装和管理 GitHub Copilot
- Visual Studio 使用 GitHub Copilot 扩展
- Visual Studio 使用 GitHub Copilot 聊天
- Visual Studio 使用 GitHub Copilot 协助调试
- Visual Studio 使用 IntelliCode AI 辅助代码开发
- Visual Studio 玩转 IntelliCode AI辅助开发
文章目录
- 一、前言
- 二、获取 AI 帮助以调试应用
- 2.1 启动调试会话
- 三、获取有关异常的 AI 帮助
- 3.1 启动调试会话
- 3.2 请求 AI 帮助
- 四、获取条件断点和跟踪点的 AI 帮助
- 五、在 IEnumerable 表格可视化工具中获取 AI 帮助
- 5.1 获取自动见解的 AI 帮助
- 六、总结
一、前言
本文介绍如何使用 GitHub Copilot 更有效地进行 调试
。 Copilot 可提供 代码修复
,以及有关代码工作原理的 深入分析
和 解释
。 它有助于提供针对 bug
的建议修复,并解释异常等事项。 Copilot 能够理解调用 堆栈
、帧
、变量名称
和 值
。 因此,你可与调试器感知的 AI 进行交互,从而询问与代码相关的 详细问题
以及 一般的 调试问题
。
此外,Copilot
为某些目标方案提供了更精确的帮助,例如:
- 异常
- 变量
- 死锁
- 快速操作(灯泡)
若要在这些场景中进行调试时获取 AI 帮助,请查找 “询问 Copilot”
。按钮。 在这些场景中,Copilot 已知问题的上下文。 例如,它知道当前的调用堆栈、要询问的代码行以及异常的名称(如果发生了一个异常),因此 无需
在聊天中自行提供 上下文
。 Copilot 还提供了使用 条件断点
和 跟踪点
的建议。
二、获取 AI 帮助以调试应用
以下简易示例演示如何使用内联聊天视图获取 AI 帮助。
此外,还可通过选择 视图
> GitHub Copilot 聊天
以通过单独的聊天窗口来获取帮助。
2.1 启动调试会话
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]?
按 Enter 时,Copilot 会根据对代码的理解来提供答案。 (你可能会看到不同于此处所示的响应。
如果 Copilot 为代码提供了 建议
的 修复方法
,则会为你显示。 如果没有,则可要求 Copilot 提供代码建议。
在内联聊天中,使用“#”符号并从下拉列表中进行选择,将特定信息移交给 Copilot,同时在问题中引用该信息。 例如,如果选择部分代码,然后键入 #,则可以从 # 下拉列表中选择该所选内容。 还可以使用“#”符号来引用下拉列表中显示的 IDE 功能,例如“局部变量”窗口。
7. 在此示例中,滚动到 Copilot 答案的末尾,然后在内联聊天窗口的末尾选择后续问题:“未向程序传递任何参数时,如何处理此情况?”
Copilot 会显示针对代码的建议修复方法。
如果要应用此代码修复方法,则请选择接受。
8. 选择取消,以便在下一节中继续学习 Copilot 的其他功能。
三、获取有关异常的 AI 帮助
以下简单示例演示如何在遇到异常时获取 AI 帮助,以及如何根据 AI 建议的解决方法快速更新代码。
3.1 启动调试会话
在使用同一示例应用的调试器中暂停时,按 F11 或调试>单步执行可执行当前的语句。
发生 IndexOutOfRangeException
并且应用暂停,显示异常。
若要获取异常的 AI 帮助,请继续下一部分。
3.2 请求 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 帮助,请参阅 修改可视化工具表达式。
5.1 获取自动见解的 AI 帮助
除了 交互式调试
帮助之外,Copilot 还会在 CPU 使用情况自动见解中提供详细信息。 它可提供与一组特定性能见解相关的信息和见解。 使用 Copilot,可询问有关代码中已识别的热路径上的函数的问题,以帮助你生成更高效或更具成本效益的代码。
即使没有确定具体的性能见解,也会出现询问 Copilot 按钮。 选择询问 Copilot,以向 Copilot 学习并开始提问。
六、总结
总之,Copilot 可以协助我们调试进行更好的调试,它有助于提供针对 bug 的建议修复。 因此,你可与调试器感知的 AI 进行交互,从而询问与代码相关的详细问题以及一般的调试问题。
🎀🎀🎀【AI辅助编程系列】🎀🎀🎀
- Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码
- Visual Studio 安装和管理 GitHub Copilot
- Visual Studio 使用 GitHub Copilot 扩展
- Visual Studio 使用 GitHub Copilot 聊天
- Visual Studio 使用 GitHub Copilot 协助调试
- Visual Studio 使用 IntelliCode AI 辅助代码开发
- Visual Studio 玩转 IntelliCode AI辅助开发