Visual Studio 使用 GitHub Copilot 协助调试

🎀🎀🎀【AI辅助编程系列】🎀🎀🎀

  1. Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码
  2. Visual Studio 安装和管理 GitHub Copilot
  3. Visual Studio 使用 GitHub Copilot 扩展
  4. Visual Studio 使用 GitHub Copilot 聊天
  5. Visual Studio 使用 GitHub Copilot 协助调试
  6. Visual Studio 使用 IntelliCode AI 辅助代码开发
  7. 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 帮助

  1. 当应用程序因 异常暂停 时,选择 “询问 Copilot” 按钮。

在这里插入图片描述
如果尚未打开,则将出现 Copilot 聊天窗口,并提供错误及其发生原因的评估。 在此示例中,Copilot 标识了建议的代码修补程序、复制代码的按钮以及代码修补程序的 “预览” 按钮。

如果对异常有疑问,请在 “询问 Copilot” 文本框中进行询问。

  1. 选择预览按钮。

在这里插入图片描述
Visual Studio 显示代码预览,其中包含建议的解决方法。

  1. 查看建议的解决方法,然后选择 “接受” 以应用代码建议。

在这里插入图片描述

  1. 重启调试程序。

这一次未发生异常。 已解决此问题!

四、获取条件断点和跟踪点的 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);
}
  1. names.Add("Name: " + item) 语句左侧,右键单击装订线,然后选择插入条件断点。

  2. 选择表达式字段,Copilot 会开始处理建议。

在这里插入图片描述

  1. 出现建议时,请选择一个(例如 item == “John”)。 编辑建议,使名称为 Fred。

在这里插入图片描述

  1. 若要测试条件表达式,请执行以下操作:
  • 在解决方案资源管理器中右键单击 “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辅助编程系列】🎀🎀🎀

  1. Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码
  2. Visual Studio 安装和管理 GitHub Copilot
  3. Visual Studio 使用 GitHub Copilot 扩展
  4. Visual Studio 使用 GitHub Copilot 聊天
  5. Visual Studio 使用 GitHub Copilot 协助调试
  6. Visual Studio 使用 IntelliCode AI 辅助代码开发
  7. Visual Studio 玩转 IntelliCode AI辅助开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/938970.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot限流注解

我们在工作中 有些接口访问量过大 为了保证服务的正常运行可以增加限流 第一步 引入aop和redis <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency…

MySQL多表查询时有哪些连接方式?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL多表查询时有哪些连接方式?】面试题。希望对大家有帮助&#xff1b; MySQL多表查询时有哪些连接方式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中进行多表查询时&#xff0c;常见的连接方式有以下…

Python | 虚拟环境01 - 什么是虚拟环境、它的由来

导言 python3真的不是安装了就完事&#xff0c;必须理解虚拟环境是什么才算是初步掌握python环境。 学习python3虚拟环境&#xff0c;建议参考B站教程。这位博主用了6个视频&#xff0c;每一个视频仅仅几分钟。居然把python3的虚拟环境讲明白了。 虚拟环境&#xff08;Virtual…

【已解决】在Visual Studio里将应用与Microsoft Store关联时提示网络异常

发布Windows应用时。在Visual Studio里点击"发布“&#xff0c;将应用与Microsoft Store关联时&#xff0c;一直提示网络错误。 查了一下论坛&#xff0c;发现之前也经常出现&#xff0c;但我是第一次遇到。 不能就这样一直被卡着呀&#xff0c;研究了一下&#xff0c;还…

html基础-认识html

1.什么是html html是浏览器可以识别的的标记语言&#xff0c;我们在浏览器浏览的网页就是一个个的html文档 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>认识html</title> </head> <body><h1…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(四)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(四) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…

MySQL 深入理解隔离性

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 MySQL 深入理解隔离性 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 由于之前在 MySQL 事务特…

Nacos 3.0 考虑升级到 Spring Boot 3 + JDK 17 了!

Nacos 由阿里开源&#xff0c;是 Spring Cloud Alibaba 中的一个重要组件&#xff0c;主要用于发现、配置和管理微服务。 由于 Spring Boot 2 的维护已于近期停止&#xff0c;Nacos 团队考虑升级到 Spring Boot 3 JDK 17&#xff0c;目前正在征求意见和建议。 这其实是一件好…

【硬件接口】I2C总线接口

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、概述 I2C总线是一种非常常用的总线&#xff0c;其多用于一个主机&#xff08;或多个&#xff09;与单个或多个从设备通讯…

监控视频汇聚融合云平台一站式解决视频资源管理痛点

随着5G技术的广泛应用&#xff0c;各领域都在通信技术加持下通过海量终端设备收集了大量视频、图像等物联网数据&#xff0c;并通过人工智能、大数据、视频监控等技术方式来让我们的世界更安全、更高效。然而&#xff0c;随着数字化建设和生产经营管理活动的长期开展&#xff0…

GEE+本地XGboot分类

GEE本地XGboot分类 我想做提取耕地提取&#xff0c;想到了一篇董金玮老师的一篇论文&#xff0c;这个论文是先提取的耕地&#xff0c;再做作物分类&#xff0c;耕地的提取代码是开源的。 但这个代码直接在云端上进行分类&#xff0c;GEE会爆内存&#xff0c;因此我准备把数据下…

Spring Boot 集成 MyBatis 全面讲解

Spring Boot 集成 MyBatis 全面讲解 MyBatis 是一款优秀的持久层框架&#xff0c;与 Spring Boot 集成后可以大大简化开发流程。本文将全面讲解如何在 Spring Boot 中集成 MyBatis&#xff0c;包括环境配置、基础操作、高级功能和最佳实践。 一、MyBatis 简介 1. SqlSession …

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:电影院后台管理系统(前后端源码 + 数据库 sql 脚本)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 项目介绍 2.0 用户登录功能 3.0 用户管理功能 4.0 影院管理功能 5.0 电影管理功能 6.0 影厅管理功能 7.0 电影排片管理功能 8.0 用户评论管理功能 9.0 用户购票功…

【字符串匹配算法——BF算法】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 BF算法介绍及过程演示代码实现过程下节预告KMP算法利用next数组存储子串中j回退的位置&#xff08;…

单幅图像合成 360° 3D 场景的新方法:PanoDreamer,可同时生成全景图像和相应的深度信息。

论文介绍了一种从单幅图像合成 360 3D 场景的新方法。该方法以连贯的方式生成全景图及其相应的深度&#xff0c;解决了现有最先进方法&#xff08;如 LucidDreamer 和 WonderJourney 的局限性。这些方法按照生成轨迹依次添加细节&#xff0c;通常在循环回输入图像时导致可见的接…

【蓝桥杯】46195.水仙花数

水仙花数 问题描述 打印所有100至999之间的水仙花数。所谓水仙花数是指满足其各位数字立方和为该数字本身的整数&#xff0c;例如 153135333。 样例输入 无 样例输出 153 370 371 407解题思路 遍历100到999之间的所有整数。对每个整数&#xff0c;计算其各位数字的立方和…

#思科模拟器通过服务配置保障无线网络安全Radius

演示拓扑图&#xff1a; 搭建拓扑时要注意&#xff1a; 只能连接它的Ethernet接口&#xff0c;不然会不通 MAC地址绑定 要求 &#xff1a;通过配置MAC地址过滤禁止非内部员工连接WiFi 打开无线路由器GUI界面&#xff0c;点开下图页面&#xff0c;配置路由器无线网络MAC地址过…

cpolar使用步骤

功能&#xff1a;内网穿透 下载地址&#xff1a;cpolar - secure introspectable tunnels to localhost 1 找到安装目录 2 进入命令行 目录处输入 cmd 3 验证 authtoken 不同用户 验证码不同。 注册后可以使用 cpolar.exe authtoken MzBlNzMwODktZjA3Yi00ZjJlLWJiMzQtNWU…

【排序算法】——插入排序

目录 前言 简介 基本思想 1.直接插入排序 2.希尔排序 代码实现 1.直接插入排序 2.希尔排序 总结 1.时空复杂度 2.稳定性 尾声 前言 排序(Sorting) 是计算机程序设计中的一种重要操作&#xff0c;它的功能是将一个数据元素&#xff08;或记录&#xff09;的任意序列&…

MySQL学习之DDL操作

目录 数据库的操作 创建 查看 选择 删除 修改 数据类型 表的创建 表的修改 表的约束 主键 PRIMARY KEY 唯一性约束 UNIQUE 非空约束 NOT NULL 外键约束 约束小结 索引 索引分类 常规索引 主键索引 唯一索引 外键索引 优点 缺点 视图 创建 删除 修改…