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

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

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

相关文章

了解ARM的千兆以太网——RK3588

1. 简介 本文并不重点讲解调试内容&#xff0c;重点了解以太网在ARM设计中的框架以及在设备树以及驱动的一个整体框架。了解作为一个驱动开发人员当拿到一款未开发过的ARM板卡应该怎么去把网卡配置使用起来。 2. 基础知识介绍 在嵌入式ARM中实现以太网的解决方案通常有以下两种…

Springboot家政服务管理系统

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

DC-9笔记

靶机信息 官网:DC: 9 ~ VulnHub 只有一个flag,官网上没给其他提示 信息收集 nmap 192.168.66.2-254nmap 192.168.66.146 -A -p-开放了80端口,22端口是filtered的,被过滤? NMAP 六种端口状态解读_nmap filtered-CSDN博客 那来看看http服务吧 http(80) 页脚是空白的,插件也…

STM32-笔记3-驱动蜂鸣器

1、复制03项目&#xff0c;重命名为04项目 打开04项目的Drivers/BSP/led文件夹&#xff0c;把led文件夹更改为beep文件夹&#xff0c;改文件夹内部的.c和.h文件更改为beep.c和beep.h文件&#xff0c;如下图所示。 2、打开工程文件 出现弹窗&#xff0c;显示找不到xx文件&#…

PHP开发日志 ━━ 基础知识:四种不同的变量返回方式该如何调用

最近在给框架升级&#xff0c;其中涉及到古早的缓存系统升级&#xff0c;现在准备区分类型为混合、变量和普通文件&#xff0c;那么变量用什么形式存储到缓存才能给后续开发带来便利和通用性呢&#xff1f;于是就涉及到了本文的php基础知识。 好吧&#xff0c;又是一个无用的知…

概率论得学习和整理30: 用EXCEL 描述泊松分布 poisson distribution

目录 1 泊松分布的基本内容 1.1 泊松分布的关键点 1.1.1 属于离散分布 1.1.2 泊松分布的特点&#xff1a;每个子区间内概率相等 &#xff0c; λ就是平均概率 1.2 核心参数 1.3 pmf公式 1.4 期望和方差 2 例1&#xff1a;用EXCEL计算泊松分布的概率 3 比较λ不同值时…

Java中的垃圾收集器

文章目录 1. 理解不同类型的垃圾收集器1.1 Serial 收集器1.2 Parallel (吞吐量) 收集器1.3 CMS (Concurrent Mark-Sweep) 收集器1.4 G1 (Garbage First) 收集器1.5 ZGC 和 Shenandoah GC1.6 Epsilon GC1.7 ParNew 收集器1.8 Zing (Azul Systems) 2. 优化垃圾收集器的选择和配置…

测试工程师八股文05|功能测试、业务测试

一、基础概念 1、软件测试分类 1️⃣按照软件产生的阶段划分 单元测试&#xff1a;针对程序源代码进行测试【开发自测】集成测试&#xff1a;针对模块之间功能交互进行测试系统测试&#xff1a;对整个系统&#xff08;功能、非功能&#xff09;进行全面测试验收测试&#xff…

图(dfs与bfs)算法2

进度&#xff1a;15/100 原题1&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 &#xff08;力扣的图&#xff09; 原题2&#xff1a; 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 原题3&#xff1a; 给…

《鸿蒙开发-答案之书》字符串占位符格式化

《鸿蒙开发-答案之书》字符串占位符格式化 先在string.json定义&#xff1a; {"name":"message_arrive","value":"We will arrive at %s."}使用&#xff0c;它有两种使用方式&#xff1a; 方式一&#xff1a; Text($r(app.string.…

Redis bitmaps 使用

应用场景&#xff1a; 记录id为 1 的用户&#xff0c;2024年12月签到情况&#xff0c;并统计&#xff1b; 记录 1号签到 zxys-redis:0>setbit 1:202412 1 1 记录 2号签到 zxys-redis:0>setbit 1:202412 2 1 记录 3号未签到 zxys-redis:0>setbit 1:202412 3 0 …

【微服务】SpringBoot 整合Redis Stack 构建本地向量数据库相似性查询

目录 一、前言 二、向量数据库介绍 2.1 什么是向量数据库 2.2 向量数据库特点 2.3 向量数据库使用场景 三、常用的向量数据库解决方案 3.1 Milvus 3.1.1 Milvus是什么 3.1.2 Milvus主要特点 3.2 Faiss 3.2.1 Faiss是什么 3.2.2 Faiss主要特点 3.3 Pinecone 3.3.1 …

【数据库】大二数据库复习范围 (快速版)帮助你快速复习数据库

第一章 1. 信息=数据+语义 2:数据库管理系统(database management system, DBMS) 3. 数据库系统(database system, DBS)由数据库、数据库用户、计算机硬件系统和计算机软件系统等几部分组成 4. 数据模型按应用层次可分为概念模型、逻辑模型和物理模型。 5.每个二维表…

FMIKit-Simulink 常见问题解决方案

将解压后的文件夹添加到 MATLAB 路径中&#xff1a; addpath(fullfile(pwd, FMIKit-Simulink-3.1));初始化 FMIKit&#xff1a; FMIKit.initialize(); 设置求解器rtwsfcnfmi.tlc、或grtfmi.tlc再CtrlB即可。 帮助文档可查看导出FUM和导入FMU。 FMIKit-Simulink-3.1\html\index…

UE UMG 多级弹出菜单踩坑

多级弹出菜单 https://www.bilibili.com/video/BV1ub411J7nA 运行时添加 widget 的方法 create widget 然后 add child 到某个组件&#xff0c;比如 canvas 运行时修改 widget 位置的方法 set widget slot position 用起来没效果 怀疑是因为我没有传入 slot 但是暂时不知…

sunset: midnight

https://www.vulnhub.com/entry/sunset-midnight,517/ 主机发现端口扫描 探测存活主机&#xff0c;8是靶机 nmap -sP 192.168.56.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-05 16:49 CST Nmap scan report for 192.168.56.1 …

【PyTorch】动态调整学习率 torch.optim.lr_scheduler.StepLR 调度器

文章目录 1. torch.optim.lr_scheduler.StepLR 官方文档详解2. 使用示例2.1 官方提供使用示例2.2 自己写代码测试方法2.2.1 get_last_lr() 方法2.2.2 state_dict() 方法2.2.3 load_state_dict() 保存和加载调度器 3. 思考3.1 为什么需要state_dict()3.2 get_lr() 与 get_last_l…

伊克罗德与九科信息共同发布RPA+AI智能机器人解决方案

12月12日&#xff0c;伊克罗德信息在上海举办“创见AI&#xff0c;迈进智能化未来——科技赋能零售电商”活动&#xff0c;与九科信息、亚马逊云科技共同探讨与分享&#xff0c;融合生成式AI技术和智能自动化&#xff08;RPA,Robotic Process Automation&#xff09;在电商零售…

hutool一些典型的方法使用笔记

hutool一些典型的方法使用笔记 1 克隆1.1 深克隆 2类型转换2.1其他类型转换为字符串2.2 转换为日期对象2.3 数组转集合2.4 Unicode和字符串转换2.5 数字转中文 文档地址&#xff1a;https://blog.csdn.net/dxjren/article/details/144468399 1 克隆 1.1 深克隆 定义一个实体类…

QT实战经验总结 连载中

QT实战经验总结 在看书系统学习后&#xff0c;就开始实战了&#xff0c;会遇到很多问题1.信号和槽的思考2.在python 或 C 代码中&#xff0c;对 QML 代码中控件的调用关于在一个窗口上不断打开新窗口 在看书系统学习后&#xff0c;就开始实战了&#xff0c;会遇到很多问题 pyt…