Общие сведения об отладчике .NET в Visual Studio Code

Завершено

В предыдущем уроке вы узнали, что отладчик помогает контролировать выполнение программы и наблюдать за его состоянием. В этом разделе описано, как выполнять обе эти задачи в Visual Studio Code.

Начнем с изучения настройки отладчика Visual Studio Code для его использования с .NET.

Настройка Visual Studio Code для отладки .NET

При первом открытии файла C# в Visual Studio Code появится запрос на установку рекомендуемых расширений для C#.

снимок экрана с запросом Visual Studio Code на установку расширения C#.

Visual Studio Code установит расширение C# и отобразит дополнительные запросы на добавление необходимых ресурсов для сборки и отладки проекта.

снимок экрана приглашения Visual Studio Code на добавление необходимых ресурсов для сборки и отладки вашего проекта на .NET.

Заметка

Поддержка языка C# в Visual Studio Code является необязательной установкой из Marketplace. Visual Studio Code автоматически запрашивает установку этого расширения при открытии файла C#, если вы еще не сделали этого. Если у вас возникли проблемы со сборкой или отладкой приложения .NET в Visual Studio Code, необходимо убедиться, что у проекта есть необходимые ресурсы, для поддержки языка C#.

Точки останова

Как вы узнали в предыдущем уроке, отладчик помогает анализировать и контролировать выполнение программы. При запуске отладчика Visual Studio Code он сразу же начинает выполнение кода. Так как ваш код выполняется быстро, вам нужно иметь возможность приостановки программы на любой инструкции. Вы будете использовать контрольные точки для этого.

Вы можете добавить точку останова в Visual Studio Code, щелкнув слева от номера строки на строке, в которой хотите установить точку останова. После включения точки останова появится красный круг. Чтобы удалить его, снова выберите красный круг.

Снимок экрана с добавленной точкой останова в окне редактора Visual Studio Code.

Если щелкнуть правой кнопкой мыши, чтобы добавить точку останова, можно также выбрать добавить условную точку останова. Эта специальная точка останова позволяет ввести условие для прерывания выполнения. Эта точка останова будет активна только при выполнении указанного условия. Вы также можете изменить существующую точку останова, щелкнув ее правой кнопкой мыши и выбрав Изменить точку останова.

снимок экрана: настройка условной точки останова в Visual Studio Code.

Обзор отладчика Visual Studio Code

После настройки точек останова и запуска приложения на экране появятся новые информационные панели и элементы управления.

снимок экрана: обзор отладчика Visual Studio Code.

  1. Элементы управления запуском отладчика
  2. Состояние переменных
  3. Состояние отслеживаемых переменных
  4. Текущий стек вызовов
  5. Точки останова
  6. Элементы управления выполнением
  7. Текущий шаг выполнения
  8. Консоль отладки

Элементы управления запуском отладчика

В верхней части боковой панели можно найти элементы управления запуском:

снимок экрана: элементы управления отладочной боковой панели Visual Studio Code.

  1. Начните отладку.
  2. Выберите конфигурацию активного запуска.
  3. Измените файл launch.json. Создайте его, если вам нужно.
  4. Откройте терминал отладки.

Просмотр и изменение состояния переменных

При анализе причины дефекта программы просмотрите состояние переменных, чтобы искать непредвиденные изменения. Для этого можно использовать панель переменных.

Ваши переменные организованы по области видимости.

  • Локальные переменные: доступные в текущей области, как правило, текущая функция.
  • Глобальные переменные: доступные везде в программе. Системные объекты из среды выполнения JavaScript также включены, поэтому не удивляйтесь, если вы видите много вещей там.
  • Переменные замыкания: доступны из текущего замыкания, если они есть. Закрытие объединяет локальную область функции с областью из внешней функции, к которой она принадлежит.

Области и переменные можно развернуть, выбрав стрелку. При развертывании объектов можно просмотреть все свойства, определенные в объекте.

Можно изменить значение переменной на лету, дважды щелкнув переменную.

Наведите указатель мыши на параметр функции или переменную непосредственно в окне редактора, вы также можете просмотреть его значение.

Снимок экрана наведения указателя мыши на переменную во время отладки.

Просмотр переменных

Это может быть утомительно искать состояние переменной каждый раз, когда вы хотите отслеживать его со временем или в различных функциях. Вот где панель Watch пригодится.

Нажмите кнопку плюс, чтобы ввести имя переменной или выражение для просмотра. В качестве альтернативы можно щелкнуть правой кнопкой мыши переменную на панели Переменные и выбрать Добавить, чтобы просмотреть.

Все выражения на панели наблюдения обновляются автоматически при выполнении кода.

Стек вызовов

Каждый раз, когда программа входит в функцию, запись добавляется в стек вызовов. Когда ваше приложение становится сложным, и вы многократно вызываете функции внутри других функций, стек вызовов представляет собой цепочку вызовов функций.

Полезно найти источник исключения. Если в программе произошел непредвиденный сбой, в консоли часто отображается что-то, как показано в следующем примере:

Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
   at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9

Группа строк at [...] в сообщении об ошибке называется трассировкой стека. Трассировка стека предоставляет имя и происхождение каждой функции, которая была вызвана до завершения выполнения исключения. Это может быть немного сложно расшифровать, так как он также включает внутренние функции из среды выполнения .NET.

Панель стека вызовов в Visual Studio Code очень удобна в использовании. Он фильтрует нежелательные сведения, чтобы показать только соответствующие функции из собственного кода по умолчанию. Затем вы можете развернуть стек вызовов, чтобы узнать, откуда возникло исключение.

Панель точек останова

На панели точек останова вы можете видеть и переключать все добавленные вами в код точки останова. Вы также можете переключать опции для остановки на пойманных или непойманных исключениях. Вы можете использовать панель точек останова для проверки состояния вашей программы и поиска источника исключения с помощью стека вызовов , когда оно возникает.

Управление выполнением

Вы можете управлять потоком выполнения программы с помощью этих элементов управления.

снимок экрана элементов управления выполнением отладчика Visual Studio Code.

Слева направо элементы управления:

  • Продолжить или приостановить выполнение: если выполнение приостановлено, оно будет продолжаться до следующей точки останова. Если программа запущена, кнопка переключается на кнопку приостановки, которую можно использовать для приостановки выполнения.
  • шаг над: выполняет следующую инструкцию кода в текущем контексте.
  • шаг в: как шаг над, но если следующая инструкция является вызовом функции, перейдите к первому оператору кода этой функции (так же, как и команда step).
  • Шаг выхода: если вы находитесь внутри функции, выполните оставшийся код этой функции и перейдите к инструкции после начального вызова функции (так же, как и команда out).
  • Перезапуск: Перезапустите вашу программу с самого начала.
  • остановить: завершить выполнение и выйти из отладчика.

Использование консоли отладки

Вы можете отобразить или скрыть консоль отладки, выбрав CTRL+SHIFT+Y для Windows и Linux. Выберите cmd+SHIFT+Y для Mac. Консоль отладки можно использовать для визуализации журналов консоли приложения. Его также можно использовать для вычисления выражений или выполнения кода в текущем содержимом выполнения, таких как команды или имена переменных в встроенном отладчике .NET.

Вы можете ввести выражение .NET в поле ввода в нижней части консоли отладки, а затем выбрать ВВОД, чтобы оценить его. Результат отображается непосредственно в консоли.

снимок экрана консоли отладки Visual Studio Code.

С помощью консоли отладки можно быстро проверить значение переменной, протестировать функцию с различными значениями или изменить текущее состояние.

Заметка

Хотя консоль отладки очень полезна для выполнения и оценки кода .NET, это может быть немного запутано при попытке выполнить или отладить консольное приложение .NET, так как консоль отладки не принимает входные данные терминала для запущенной программы.

Для обработки входных данных терминала во время отладки можно использовать интегрированный терминал (один из окон Visual Studio Code) или внешний терминал. В этом руководстве используется интегрированный терминал.

  1. Откройте .vscode/launch.json.

  2. Измените параметр console на integratedTerminal:

    "console": "internalConsole",
    

    Кому:

    "console": "integratedTerminal",
    
  3. Сохраните изменения.

В следующем уроке вы узнаете, как использовать отладчик для исправления ошибки в коде Fibonacci, который мы видели ранее.