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.pswp.cn/web/63375.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63375.shtml
英文地址,請注明出處:http://en.pswp.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…