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 比较λ不同值时…

测试工程师八股文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; 给…

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 …

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

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

从 CephFS 到 JuiceFS:同程旅行亿级文件存储平台构建之路

随着公司业务的快速发展&#xff0c;同程旅行的非结构化的数据突破 10 亿&#xff0c;在 2022 年&#xff0c;同程首先完成了对象存储服务的建设。当时&#xff0c;分布式文件系统方面&#xff0c;同程使用的是 CephFS&#xff0c;随着数据量的持续增长&#xff0c;CephFS 的高…

固定资产分类,提升资产盘活效益

固定资产是企业长期使用的重要资源&#xff0c;涵盖范围广、种类多&#xff0c;不同的资产需要针对性管理。通过科学的分类与高效的盘活策略&#xff0c;不仅可以优化资源配置&#xff0c;还能提升企业资产的利用效率和经济效益。以下将详细解析固定资产的分类方式和盘活效益的…

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

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

Linux 文件系统目录结构及其简要介绍

Hello! 亲爱的小伙伴们&#xff0c;大家好呀&#xff08;Smile~&#xff09;&#xff01;我是 H u a z z i Huazzi Huazzi&#xff0c;欢迎观看本篇博客&#xff0c;接下来让我们一起来学习一下Linux 文件系统目录结构吧&#xff01;祝你有所收获&#xff01; 本篇博客的目录&a…

小米准备入局Nas?Nas究竟是啥?能干啥?

一开头就来了个三连问&#xff1a;小米准备入局Nas&#xff1f;Nas究竟是啥&#xff1f;Nas能干啥&#xff1f; 好像这段时间Nas这个词频频出现&#xff0c;但很多小伙伴都不知道这个是什么设备。首先咱们来解决一下名词Nas是什么意思。 什么是Nas&#xff1f; 为了尽可能解释…

基于Socket实现客户端和服务端的Tcp通信(C#)

0.前言 使用C#和Unity实现复刻Liar’s bar中的功能 软件开发大作业 本系列文章用于记录与分享开发过程中使用到的知识点&#xff0c;以及常见错误 本文主要描述有关网络编程的内容 目录 0.前言1.使用Socket搭建Server1.1Server端的Socket连接1.2 Server端接收Client的信息1.3…

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

A*&#xff08;A-star&#xff09;是一种图遍历和寻路算法&#xff0c;由于其完整性、最优性和最佳效率&#xff0c;它被用于计算机科学的许多领域。给定一个加权图、一个源节点和一个目标节点&#xff0c;该算法将找到从源到目标的最短路径&#xff08;相对于给定的权重&#…

汽车供应链 “剧变”开始,“智能感知潜在龙头”诞生

智能汽车产业链“剧变”已经开启&#xff0c;智能感知软硬件能力的权重正在不断被放大。 比如满足高阶泊车的第二代AK2超声波传感器、满足人机共驾场景需求的电子外后视镜&#xff08;CMS&#xff09;、iTOF 3D成像视觉感知&#xff08;用于舱内监控&#xff09;等新产品&…

Latex中表格添加底部文本注释并调整对齐

如何实现从第一个表到第三个表的转换&#xff0c; 其中主要涉及到两点&#xff1a; &#xff08;1&#xff09;底部脚注与表格自动对齐并缩进换行 &#xff08;2&#xff09;表格自适应页面宽度 底部脚注的对齐与换行缩进需要用到 \usepackage{threeparttable} \usepackage{…