Поделиться через


Руководство. Отладка консольного приложения .NET с помощью Visual Studio Code

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

Необходимые условия

Используйте конфигурацию сборки отладки

Отладка и Релиз — это встроенные конфигурации сборки .NET. Вы используете конфигурацию отладки для диагностики и конфигурацию релиза для окончательной дистрибуции.

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

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

  1. Запустите Visual Studio Code.

  2. Откройте папку проекта, созданного в Создание консольного приложения .NET с помощью Visual Studio Code.

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

Точка останова временно прерывает выполнение приложения до выполнения строки с точкой останова.

  1. Откройте файл Program.cs.

  2. Задайте точку останова в строке, отображающей имя, дату и время, щелкнув левое поле окна кода. Левое поле находится слева от номеров строк. Другие способы настройки точки останова — это нажатие клавиши F9 или выбор Запуск>Переключить точку останова в меню при выборе строки кода.

    Visual Studio Code указывает строку, в которой задается точка останова, отображая красную точку в левом поле.

    набор точек останова

Запуск отладки

  1. Откройте представление отладки, выбрав значок отладки в меню слева.

    Откройте вкладку отладки в Visual Studio Code

  2. Выберите Запуск и отладка. При появлении запроса выберите C#, а затем выберите C#: запустить стартовый проект. Другие способы запустить программу в режиме отладки— это нажатие клавиши F5 или выбор Выполнить>Начать отладку из меню.

    начать отладку

  3. Если будет предложено выбрать конфигурацию запуска, выберите C#: HelloWorld HelloWorld.

  4. Перейдите на вкладку консоли отладки, чтобы увидеть запрос "Как вас зовут?", который программа отображает перед ожиданием ответа.

    Выберите вкладку

  5. Введите строку текста в окне консоли отладки в ответ на запрос имени, а затем нажмите клавишу Enter .

    Выполнение программы останавливается, когда она достигает точки останова и до запуска метода Console.WriteLine. В разделе Локальные в окне переменных отображаются значения переменных, определенных в текущем методе.

    достигнута точка останова, показаны локальные переменные

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

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

  1. Выберите вкладку консоли отладки.

  2. Введите name = "Gracie" в строку запроса в нижней части окна консоли отладки и нажмите Ввод.

    Изменение значений переменных

  3. Введите currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() в нижней части окна консоли отладки и нажмите клавишу ВВОД.

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

  4. Продолжайте выполнение программы, выбрав кнопку Продолжить на панели инструментов. Другим способом продолжения является нажатие клавиши F5.

    Продолжить отладку

    Значения в консольном окне соответствуют изменениям, внесённым в отладочной консоли.

    Терминал с введенными значениями

  5. Нажмите Enter, чтобы выйти из приложения и остановить отладку.

Установка условной точки останова

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

  1. Щелкните правой кнопкой мыши (Ctrl-щелкните на macOS) на красную точку, представляющую точку останова. В контекстном меню выберите Изменить точку останова, чтобы открыть диалоговое окно, позволяющее ввести условное выражение.

    контекстное меню точки останова

  2. Выберите Expression в раскрывающемся списке, введите следующее условное выражение и нажмите клавишу ВВОД.

    String.IsNullOrEmpty(name)
    

    Ввод условного выражения

    Каждый раз при нажатии точки останова отладчик вызывает метод String.IsNullOrEmpty(name), и он прерывается в этой строке, только если вызов метода возвращает true.

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

  3. Запустите программу с отладкой, нажав клавиши F5.

  4. На вкладке консоли отладки нажмите клавишу ВВОД при появлении запроса на ввод имени.

    Так как указанное условие (name либо null, либо String.Empty) удовлетворено, выполнение программы останавливается при достижении точки останова и до запуска метода Console.WriteLine.

    В окне переменных показано, что значение переменной равно или .

  5. Убедитесь, что значение является пустой строкой, введя следующую инструкцию в командной строке консоли отладки и нажав клавишу ВВОД . Результатом является true.

    name == String.Empty
    
  6. Нажмите кнопку "Продолжить" на панели инструментов, чтобы продолжить выполнение программы.

  7. Нажмите клавишу Enter, чтобы выйти из программы и остановить отладку.

  8. Удалите точку останова, щелкнув по точке в левой панели окна редактирования кода. Другие способы очистки точки останова— это нажатие клавиши F9 или выбор запуск > переключение точки останова в меню во время выбора строки кода.

  9. Если появится предупреждение о том, что условие точки останова будет потеряно, выберите Удалить точку останова.

Пошаговое выполнение программы

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

  1. Задайте точку останова в открывающей фигурной скобке метода Main.

  2. Нажмите клавишу F5, чтобы начать отладку.

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

    На этом этапе окно переменных показывает, что массив пуст, а и имеют значения по умолчанию.

  3. Выберите выполнить команду>«Шаг в» или нажмите F11 .

    кнопка Step-Into

    Visual Studio Code выделяет следующую строку.

  4. Выберите выполнить шагили нажмите клавишу F11.

    Visual Studio Code запускает Console.WriteLine для запроса имени и выделяет следующую строку выполнения. Следующая строка — это Console.ReadLine для name. Окно переменных осталось без изменений, а на вкладке терминала отображается запрос "Как вас зовут?".

  5. Выберите выполнить шагили нажмите клавишу F11.

    Visual Studio выделяет назначение переменных name. В окне переменных показано, что name по-прежнему null.

  6. Ответьте на запрос, введя строку на вкладке терминала и нажав Enter.

    Вкладка консоли отладки может не отображать введенную строку при вводе, но метод будет записывать входные данные.

  7. Выберите выполнить шагили нажмите клавишу F11.

    Visual Studio Code выделяет назначение переменных currentDate. В окне переменных отображается значение, возвращаемое вызовом метода Console.ReadLine. На вкладке терминала отображается строка, введенная в запросе.

  8. Выберите выполнить шагили нажмите клавишу F11.

    В окне переменных отображается значение переменной currentDate после присваивания из свойства DateTime.Now.

  9. Выберите выполнить>шаг или нажмите F11.

    Visual Studio Code вызывает метод Console.WriteLine(String, Object, Object). В окне консоли отображается отформатированная строка.

  10. Выберите Выполнить>Step Out или нажмите SHIFT +F11.

    кнопка Step-Out

    В терминале отображается сообщение "Нажмите любой ключ для выхода..."

  11. Нажмите любой ключ, чтобы выйти из программы.

Используйте конфигурацию сборки Release

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

Чтобы создать и проверить версию консольного приложения, откройте терминала и выполните следующую команду:

dotnet run --configuration Release

Дополнительные ресурсы

Дальнейшие действия

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