Отладка приложения с помощью GitHub Copilot в Visual Studio
В этой статье вы узнаете, как эффективнее выполнять отладку с помощью GitHub Copilot. Copilot может предоставлять исправления кода вместе с подробным анализом и объяснением работы кода. Это помогает с предлагаемыми исправлениями ошибок и объясняет такие вещи, как исключения. Copilot понимает стеки вызовов, фреймы, имена переменных и значения. В результате вы можете взаимодействовать с отладчиком ИИ, чтобы задать подробные вопросы, связанные с кодом и отладкой проблем в целом.
Кроме того, Copilot предоставляет более точную помощь для некоторых целевых сценариев, таких как исключения, а также для всех сценариев с расширением искусственного интеллекта для отладки, описанных в . В большинстве этих сценариев найдите кнопку Ask Copilot. В этих сценариях Copilot уже знает контекст ваших вопросов.
Дополнительные сведения о завершении GitHub Copilot в Visual Studio см. в разделе О завершении GitHub Copilot в Visual Studio.
Необходимые условия
Чтобы приступить к работе, вам потребуется:
Visual Studio 2022 версии 17.8 или позже
войти в Visual Studio с помощью учетной записи GitHub с доступом к Copilot
** Вы можете использовать GitHub Copilot бесплатно. Зарегистрируйте и используйте ИИ, чтобы быстрее и эффективнее кодировать.GitHub Copilot в Visual Studio
GitHub Copilot Chat в Visual Studio
Заметка
Если после установки расширения возникают проблемы с аутентификацией, см. раздел Устранение неполадок аутентификации вGitHub Copilot Chat.
Отладка с помощью Copilot
В следующем простом примере показано, как получить помощь СИ с помощью встроенного представления чата.
Заметка
Вы также можете получить помощь в отдельном окне чата, выбрав Просмотреть > GitHub Copilot Chat. Дополнительные сведения см. в статье Что такое расширение чата GitHub Copilot для Visual Studio?.
Запуск сеанса отладки
В Visual Studio создайте консольное приложение C#.
В окне запуска выберите Создать проект. Введите консоли в поле поиска, выберите C# в качестве языка, а затем выберите консольное приложение для .NET. Выберите Далее. Введите имя проекта, например ConsoleApp_Copilot, и выберите Next.
Выберите рекомендуемую целевую платформу или .NET 8, а затем выберите Создать.
Если вы не видите шаблон проекта консольного приложения для .NET, перейдите в раздел Tools>Get Tools and Features, который открывает Установщик Visual Studio. Выберите рабочую нагрузку разработки .NET, а затем выберите Изменить.
Visual Studio создает консольный проект, который отображается в обозревателе решений в правой области.
Замените код в 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"); } }
Щелкните правой кнопкой мыши следующую инструкцию и выберите точку останова>Вставить точку останова.
int value = Int32.Parse(args[0]);
Нажмите F5 или выберите Начало отладки в меню Отладка.
Приложение приостанавливается в точке останова. В окне "Автозапуск" показано, что переменная args имеет значение
string[0]
.Щелкните код правой кнопкой мыши и выберите Ask Copilot, чтобы открыть встроенное представление чата.
Совет
Кроме того, можно щелкнуть правой кнопкой мыши переменную в окне "Авто" или "Локальные" или в подсказке данных и выбрать Ask Copilot. Это предоставляет Copilot имя переменной и контекст, поэтому вам не нужно предоставлять контекст в чате.
Введите следующий вопрос в режиме встроенного чата:
Why does the args variable have a value of string[0]?
При нажатии EnterCopilot предоставляет ответ, основываясь на своем понимании кода. (Вы можете получить другой ответ, отличный от того, что показано здесь.)
Если у Copilot есть предлагаемое исправление для вашего кода, он покажет его вам. Если нет, вы можете попросить Copilot предложить код.
Совет
В встроенном чате используйте символ "#" и выберите из раскрывающегося списка, чтобы передать информацию Copilot, ссылаясь на нее в вопросе. Например, если выбрать часть кода, а затем ввести #, можно выбрать этот выбор из раскрывающегося списка #. Вы также можете использовать символ "#" для ссылки на функции интегрированной среды разработки, которые отображаются в раскрывающемся списке, например в окне "Локальные".
В этом примере прокрутите страницу до конца ответа Copilot и выберите следующий вопрос в конце встроенного окна чата: "Как можно справиться с ситуацией, когда аргументы не передаются в программу?"
Copilot показывает предлагаемое исправление в коде.
Если вы хотите применить исправление кода, выберите Принять.
Выберите Отмена, чтобы мы могли продолжить изучение других функций Copilot в следующем разделе.
Отладка исключения с помощью Copilot
В следующем простом примере показано, как получить помощь по искусственному интеллекту при возникновении исключения и как быстро обновить код на основе исправлений, предлагаемых ИИ.
Запуск сеанса отладки
При приостановке работы отладчика с помощью того же примера приложения нажмите клавиши F11 или Отладка>шаг в, чтобы выполнить текущую инструкцию.
Возникает
IndexOutOfRangeException
, и приложение приостанавливает работу, показывая исключение.Чтобы получить помощь ИИ по обработке исключений, перейдите к следующему разделу.
Запрос помощи по искусственному интеллекту
При остановке приложения из-за исключения нажмите кнопку Ask Copilot.
Если он еще не открыт, откроется окно чата Copilot и предоставляет оценку ошибки и причин ее возникновения. В этом примере Copilot определяет предлагаемое исправление кода, кнопку для копирования кода и кнопку предварительного просмотра для исправления кода.
Если у вас есть вопросы об исключении, задайте их в текстовом поле Ask Copilot.
Нажмите кнопку предварительного просмотра .
Visual Studio отображает предварительный просмотр кода с предлагаемым исправлением.
Просмотрите предлагаемое исправление и выберите Принять, чтобы применить предложенный код.
Перезапустите отладчик.
На этот раз исключение не возникает. Исправлено!
Получите предложения с условными точками останова и точками трассировки
Copilot предоставляет предложения для условных точек останова и точек трассировки, относящихся именно к вашему коду.
В этом примере мы показываем предложения искусственного интеллекта для условной точки останова. Для точек трассировки помощь искусственного интеллекта работает так же.
Удалите текущую точку останова, щелкнув ее или щелкните правой кнопкой мыши и выберите Удалить точку останова.
Замените следующую строку кода:
names.Add("Major Major Major");
с этим:
// names.Add("Major Major Major"); foreach (var item in args) { names.Add("Name: " + item); }
Слева от инструкции
names.Add("Name: " + item)
щелкните правой кнопкой мыши в гуттере и выберите Вставить условную точку останова.Выберите поле выражения, и Copilot начинает работать над предложениями.
При появлении предложений выберите такой вариант, как
item == "John"
. Измените предложение, чтобы имя былоFred
.Чтобы проверить условное выражение, выполните следующие действия.
Щелкните правой кнопкой мыши проект ConsoleApp_Copilot в обозревателе решений и выберите Свойства.
Выберите Отладка>Общие>Открыть интерфейс профилей запуска отладки.
В поле для аргументов командной строки введите
5 Fred Joe
, в трех отдельных строках.Перезапустите отладчик.
Когда отладчик приостанавливается в точке останова, проверьте значение
item
и убедитесь, что текущее значение соответствуетFred
.
Сценарии, улучшенные ИИ
Copilot понимает стеки вызовов, фреймы, имена переменных и значения. В результате вы можете взаимодействовать с отладчиком ИИ, чтобы задать подробные вопросы, связанные с кодом и отладкой проблем в целом.
Кроме того, Copilot предоставляет более точную помощь для некоторых целевых сценариев, таких как описанные в следующей таблице.
Функция или сценарий | Связь |
---|---|
Исключения | См. Отладка исключения с помощью Copilot в этой статье. Помощь с исключениями включает помощь при ошибках обнаружения взаимоблокировок. |
Переменные | Смотрите раздел Отладка с помощью Copilot в этой статье. |
Условные точки останова и трассировочные точки | См. получение предложений с помощью условных точек останова и точек трассировки в этой статье. |
Быстрые действия (лампочка) | См. получение помощи по ИИ с помощью быстрых действий. |
Визуализатор табличных данных IEnumerable | См. изменение выражения визуализатора. |
Встроенные возвращаемые значения | См. просмотр возвращаемых значений вызовов метода. |
Описания сводок тем | См. представление потоков (параллельные стеки). |
Автоматическая аналитика для профилирования | См. Получите помощь ИИ с автоанализом. |
В большинстве этих сценариев вы получаете целевую помощь с помощью Ask Copilot. Copilot уже знает контекст для ваших вопросов. Например, он знает стек текущих вызовов, кодовую строку, которую вы запрашиваете, и имя исключения (если произошло), поэтому вам не нужно предоставлять контекст в чате. Copilot также предоставляет предложения по использованию условных точек останова и точек трассировки.