Visual Studio 使用 GitHub Copilot 协助调试

news2024/12/19 18:29:25

🎀🎀🎀【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辅助开发

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C10.【C++ Cont】字符数组和万能头

目录 1.字符数组 1.初始化 1.按字符串初始化 2.按字符初始化 2.字符串的输入 1.无空格的字符串 2.带空格的字符串 解决方法 1.gets(了解即可) gets不安全的原因 2.fgets 3.改良后的scanf 4.getchar 3.字符数组的输出 2.C万能头 1.字符数组 C语言风格的字符串:用…

[C++]C++工具之对异常情况的处理(throw、catch、try)以及用命名空间避免同名冲突

一、C 异常处理&#x1f60a; 1.1 定义 C 中的异常处理用于应对程序运行中的异常情况&#xff08;如除零、数组越界等&#xff09;&#xff0c;通过 try-catch 机制捕获和处理错误&#xff0c;防止程序崩溃。 异常是程序运行时意外发生的事件&#xff0c;可以通过抛出&#xf…

番外篇 | Hyper-YOLO:超图计算与YOLO架构相结合成为目标检测新的SOTA !

前言:Hello大家好,我是小哥谈。Hyper-YOLO,该方法融合了超图计算以捕捉视觉特征之间复杂的高阶关联。传统的YOLO模型虽然功能强大,但其颈部设计存在局限性,限制了跨层特征的融合以及高阶特征关系的利用。Hyper-YOLO在骨干和颈部的联合增强下,成为一个突破性的架构。在COC…

IDEA搭建springboot demo

如下所示创建SpringBootTest18项目&#xff0c;我选的maven&#xff0c;创建完成项目后&#xff0c;maven会自动下载一些依赖库到maven的repository目录中。 创建的项目结构如下图所示 接下来在项目中加入Framework支持&#xff0c;右击项目&#xff0c;弹出的菜单如下图所示&a…

vscode不同项目使用不同插件

转载请注明出处&#xff1a;小帆的帆的博客 在使用vscode开发不同项目时可能会用到不同的插件。手动管理不够优雅&#xff0c;本文介绍使用Profiles的方式的来管理不同项目的插件。 手动管理不同项目的插件 本来vscode安装了有三个插件 这时需要新建一个项目&#xff0c;新…

【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )

文章目录 一、解封装1、封装与解封装流程2、解封装 常用函数 二、解封装函数简介1、avformat_alloc_context 函数2、avformat_free_context 函数3、avformat_open_input 函数4、avformat_close_input 函数5、avformat_find_stream_info 函数6、av_read_frame 函数7、avformat_s…

PDFMathTranslate 一个基于AI优秀的PDF论文翻译工具

PDFMathTranslate 是一个设想中的工具&#xff0c;旨在翻译PDF文档中的数学内容。以下是这个工具的主要特点和使用方法&#xff1a; 链接&#xff1a;https://www.modelscope.cn/studios/AI-ModelScope/PDFMathTranslate 功能特点 数学公式识别&#xff1a;利用先进的OCR&…

20241218_segmentation

参考&#xff1a; 使用SA模型 https://ai.meta.com/research/publications/segment-anything/讲解生物学意义 https://www.nature.com/articles/s41593-024-01714-3#Sec13 x.0 workflow 图像分割方法识别出重要的ROI区域计算ROI区域个数&#xff08;需要计算机算法&#xff…

Ubuntu22.04配置3D gaussian splatting

这篇博客提供了3D gaussian splatting在新安装Ubuntu上的配置过程。 1.拉仓库 2.安装显卡驱动和cuda版本 3.安装Pytorch 4.安装Pycharm和配置Python 5.安装附加依赖项&#xff08;方法一&#xff09; 6.安装Anaconda&#xff08;方法二&#xff09; 7.测试 1.拉仓库 # HT…

Apache Kylin最简单的解析、了解

官网&#xff1a;Overview | Apache Kylin 一、Apache Kylin是什么&#xff1f; 由中国团队研发具有浓厚的中国韵味&#xff0c;使用神兽麒麟&#xff08;kylin&#xff09;为名 的一个OLAP多维数据分析引擎:&#xff08;据官方给出的数据&#xff09; 亚秒级响应&#xff…

【现代服务端架构】传统服务器 对比 Serverless

在现代开发中&#xff0c;选择合适的架构是至关重要的。两种非常常见的架构模式分别是 传统服务器架构 和 Serverless。它们各有优缺点&#xff0c;适合不同的应用场景。今天&#xff0c;我就带大家一起对比这两种架构&#xff0c;看看它们的差异&#xff0c;并且帮助你选择最适…

CVE-2024-32709 WordPress —— Recall 插件存在 SQL 注入漏洞

漏洞描述 WordPress 是一款免费开源的内容管理系统,适用于各类网站,包括个人博客、电子商务系统、企业网站。其插件 WP-Recall 的 account 存在 SQL 注入漏洞,攻击者可以通过该漏洞获取数据库敏感信息。 WP-Recall 版本 <= 16.26.5 漏洞复现 搭建环境、安装插件、完成…

vue+net使用stripe支付开发流程

文章目录 前言用到的语言和技术整体流程stripe平台vue前端Net后端遇到的问题思考总结 前言 公司最近做到了国外支付功能&#xff0c;最后选型使用stripe进行支付&#xff0c;实现目标&#xff1a;使用stripe支付可以让国外用户自己选择支付方式并订阅支付。 用到的语言和技术…

什么?Flutter 可能会被 SwiftUI/ArkUI 化?全新的 Flutter Roadmap

在刚刚过去的 FlutterInProduction 活动里&#xff0c;Flutter 官方除了介绍「历史进程」和「用户案例」之外&#xff0c;也着重提及了未来相关的 roadmap &#xff0c;其中就有 3.27 里的 Swift Package Manager 、 Widget 实时预览 和 Dart 与 native 平台原生语言直接互操作…

随机森林算法原理

随机森林算法原理 算法流程随机森林的生成随机森林的预测 算法总结随机森林的优点随机森林的缺点 算法流程 随机森林的生成 输入训练数据 D&#xff0c;样本个数为 m &#xff0c;待学习的决策树数量为 T。 对于 t 1,2,…,T&#xff0c;从 D 中有放回地采样 m 次&#xff0c…

游戏AI实现-寻路算法(Dijkstra)

戴克斯特拉算法&#xff08;英语&#xff1a;Dijkstras algorithm&#xff09;&#xff0c;又称迪杰斯特拉算法、Dijkstra算法&#xff0c;是由荷兰计算机科学家艾兹赫尔戴克斯特拉在1956年发现的算法。 算法过程&#xff1a; 1.首先设置开始节点的成本值为0&#xff0c;并将…

基于MNE的EEGNet 神经网络的脑电信号分类实战(附完整源码)

利用MNE中的EEG数据&#xff0c;进行EEGNet神经网络的脑电信号分类实现&#xff1a; 代码&#xff1a; 代码主要包括一下几个步骤&#xff1a; 1&#xff09;从MNE中加载脑电信号&#xff0c;并进行相应的预处理操作&#xff0c;得到训练集、验证集以及测试集&#xff0c;每个…

Element@2.15.14-tree checkStrictly 状态实现父项联动子项,实现节点自定义编辑、新增、删除功能

背景&#xff1a;现在有一个新需求&#xff0c;需要借助树结构来实现词库的分类管理&#xff0c;树的节点是不同的分类&#xff0c;不同的分类可以有自己的词库&#xff0c;所以父子节点是互不影响的&#xff1b;同样为了选择的方便性&#xff0c;提出了新需求&#xff0c;选择…

SAP-ABAP开发学习-面向对象开发ooalv(2)

SAP-ABAP开发学习-面向对象OOALV&#xff08;1&#xff09;-CSDN博客 本文目录 一、类的继承 多态性类继承的实现 二、抽象类 三、最终类 四、接口 五、定义全局对象 一、类的继承 继承的本质是代码重用。当我们要构造一个新类时&#xff0c;无需从零开始&#xff0c;可…

典型案例 | 旧PC新蜕变!东北师范大学依托麒麟信安云“旧物焕新生”

东北师范大学始建于1946年&#xff0c;坐落于吉林省长春市&#xff0c;是中国共产党在东北地区创建的第一所综合性大学。作为国家“双一流”建设高校&#xff0c;学校高度重视教学改革和科技创新&#xff0c;校园信息化建设工作始终走在前列。基于麒麟信安云&#xff0c;东北师…