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


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

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

Важный

Все сочетания клавиш основаны на значениях по умолчанию из Visual Studio. Сочетания клавиш могут отличаться. Дополнительные сведения смотрите в Сочетания клавиш в Visual Studio.

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

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

Debug и Release — это встроенные конфигурации сборки Visual Studio. Вы используете конфигурацию Debug для отладки и конфигурацию Release для окончательного дистрибутива.

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

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

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

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

    Текущая конфигурация сборки отображается на панели инструментов. На следующем рисунке панели инструментов показано, что Visual Studio настроена для компиляции версии отладки приложения:

    панели инструментов Visual Studio с выделенной отладкой

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

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

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

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

    в окне программы Visual Studio с установленной точкой останова

  2. Нажмите клавишу F5, чтобы запустить программу в режиме отладки. Другой способ начать отладку — выбрать Отладка>Начать отладку в меню.

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

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

    скриншот точки останова в Visual Studio

Использование окна немедленного выполнения

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

  1. Если окно немедленных выражений не отображается, отобразите его, выбрав Отладка>Windows>Немедленные выражения.

  2. Введите name = "Gracie" в окно немедленного действия и нажмите клавишу Enter.

  3. Введите currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() в окно немедленного выполнения и нажмите клавишу Enter.

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

    локальные и немедленные windows в Visual Studio 2019

  4. Нажмите F5, чтобы продолжить выполнение программы. Еще одним способом продолжить является выбор в меню Отладка>Продолжить.

    Значения, отображаемые в окне консоли, соответствуют изменениям, внесенным в окне немедленного выполнения.

    окно консоли с введенными значениями

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

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

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

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

    Редактор, показывающий панель параметров точки останова — C#

  2. Для условного выражениявведите следующий код в поле с примером кода, который проверяет, является ли x равным 5.

    string.IsNullOrEmpty(name)
    
    String.IsNullOrEmpty(name)
    

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

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

  3. Нажмите кнопку Закрыть, чтобы закрыть диалоговое окно.

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

  5. В окне консоли нажмите клавишу ВВОД, когда вас попросят ввести имя.

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

  7. Выберите окно Локальные, в котором отображаются значения переменных, которые являются локальными для выполняемого метода. В этом случае Main является методом, выполняющимся в данный момент. Обратите внимание, что значение переменной name""или String.Empty.

  8. Убедитесь, что значение является пустой строкой, введя следующую инструкцию в окне непосредственного выполнения и нажав клавишу Enter . Результатом является true.

    ? name == String.Empty
    
    ? String.IsNullOrEmpty(name)
    

    Вопросительный знак направляет непосредственное окно, чтобы оценить выражение.

    немедленное окно, возвращающее значение true после выполнения инструкции — C#

  9. Нажмите F5, чтобы продолжить выполнение программы.

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

  11. Снимите точку останова, щелкнув точку в левом поле окна кода. Другие способы удаления точки останова: нажатие клавиши F9 или выбор Отладка > Переключить точку останова, находясь на строке кода.

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

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

  1. Выберите шаг отладки>в. Другим способом отладки одной инструкции за раз является нажатие клавиши F11.

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

    C#

    шаг в метод для C# в Visual Studio

    Visual Basic

    шаг в метод Visual Studio — Visual Basic

    На этом этапе окно локальных переменных показывает, что массив args пуст, а name и currentDate имеют значения по умолчанию. Кроме того, Visual Studio открыл пустое окно консоли.

  2. Нажмите F11. Visual Studio теперь выделяет следующую строку выполнения. Окно Локальные остаётся без изменений, и окно консоли остаётся пустым.

    C#

    Visual Studio шаг в источнике метода — C#

    Visual Basic

    Visual Studio шаг внутрь метода источника — Visual Basic

  3. Нажмите F11. Visual Studio выделяет инструкцию, содержащую назначение переменных name. В окне локальные показано, что name является null, а в окне консоли отображается строка "Как вас зовут?".

  4. Ответьте на запрос, введя строку в окне консоли и нажав клавишу ВВОД. Консоль не отвечает, и введенная строка не отображается в окне консоли, но метод Console.ReadLine, тем не менее, записывает входные данные.

  5. Нажмите F11. Visual Studio выделяет инструкцию, содержащую присвоение переменной currentDate. В окне Локальные отображается значение, возвращаемое вызовом метода Console.ReadLine. В окне консоли также отображается строка, введенная в запросе.

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

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

  8. Выберите Отладка>Выход из шага. Еще одним способом остановить пошаговое выполнение является нажатие клавиш Shift+F11.

    В окне консоли отображается сообщение и ожидает нажатия клавиши.

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

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

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

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

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

При нажатии F5 или выборе решения сборки в меню Сборка Visual Studio компилирует версию выпуска приложения. Вы можете протестировать это так же, как и версию отладки.

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

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