Руководство. Отладка консольного приложения .NET с помощью Visual Studio
В этом руководстве представлены средства отладки, доступные в Visual Studio.
Важный
Все сочетания клавиш основаны на значениях по умолчанию из Visual Studio. Сочетания клавиш могут отличаться. Дополнительные сведения смотрите в Сочетания клавиш в Visual Studio.
Необходимые условия
- В этом руководстве используется консольное приложение, которое вы создаете в Создание консольного приложения .NET с помощью Visual Studio.
Используйте конфигурацию сборки отладки
Debug и Release — это встроенные конфигурации сборки Visual Studio. Вы используете конфигурацию Debug для отладки и конфигурацию Release для окончательного дистрибутива.
В конфигурации отладки программа компилируется с полной символьной отладочной информацией и без оптимизации. Оптимизация усложняет отладку, так как связь между исходным кодом и созданными инструкциями более сложна. Конфигурация выпуска программы не содержит символьных сведений об отладке и полностью оптимизирована.
По умолчанию Visual Studio использует конфигурацию сборки отладки, поэтому перед отладкой не нужно изменять ее.
Запустите Visual Studio.
Откройте проект, созданный в Создание консольного приложения .NET с помощью Visual Studio.
Текущая конфигурация сборки отображается на панели инструментов. На следующем рисунке панели инструментов показано, что Visual Studio настроена для компиляции версии отладки приложения:
Установка точки останова
Точка останова временно прерывает выполнение приложения до выполнения строки с точкой останова.
Задайте точку останова в строке, отображающей имя, дату и время, щелкнув на левой границе окна кода в этой строке. Левое поле находится слева от номеров строк. Другие способы задать точку останова — переместить курсор на строку кода и нажать клавишу F9 или выбрать Отладка>Переключить точку останова в строке меню.
Как показано на следующем рисунке, Visual Studio указывает строку, на которой устанавливается точка останова, выделяя ее и отображая красную точку в левой части.
Нажмите клавишу F5, чтобы запустить программу в режиме отладки. Другой способ начать отладку — выбрать Отладка>Начать отладку в меню.
Введите строку в окне консоли, когда программа запрашивает имя, а затем нажмите клавишу ВВОД.
Выполнение программы останавливается, когда она достигает точки останова и до выполнения метода
Console.WriteLine
. В окне Локальные отображаются значения переменных, определенных в методе, который выполняется в данный момент.
Использование окна немедленного выполнения
Окно непосредственное даёт возможность взаимодействовать с приложением, которое вы отлаживаете. Вы можете интерактивно изменить значение переменных, чтобы узнать, как это влияет на программу.
Если окно немедленных выражений не отображается, отобразите его, выбрав Отладка>Windows>Немедленные выражения.
Введите
name = "Gracie"
в окно немедленного действия и нажмите клавишу Enter.Введите
currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime()
в окно немедленного выполнения и нажмите клавишу Enter.В окне Немедленное отображается значение строковой переменной и свойства значения DateTime. Кроме того, значения переменных обновляются в окне Локальные переменные.
Нажмите F5, чтобы продолжить выполнение программы. Еще одним способом продолжить является выбор в меню Отладка>Продолжить.
Значения, отображаемые в окне консоли, соответствуют изменениям, внесенным в окне немедленного выполнения.
окно консоли
Нажмите любой ключ, чтобы выйти из приложения и остановить отладку.
Установка условной точки останова
Программа отображает строку, в которую вводит пользователь. Что произойдет, если пользователь ничего не вводит? Это можно проверить с помощью полезной функции отладки, называемой условной точки останова.
Щелкните правой кнопкой мыши красную точку, представляющую точку останова. В контекстном меню выберите условия, чтобы открыть диалоговое окно "Параметры точки останова". Выберите поле для условий , если оно еще не выбрано.
Редактор, показывающий панель параметров точки останова — C#
Для условного выражениявведите следующий код в поле с примером кода, который проверяет, является ли
x
равным 5.string.IsNullOrEmpty(name)
String.IsNullOrEmpty(name)
Каждый раз при нажатии точки останова отладчик вызывает метод
String.IsNullOrEmpty(name)
, и он прерывается в этой строке, только если вызов метода возвращаетtrue
.Вместо условного выражения можно указать количество попаданий, которое прерывает выполнение программы перед выполнением инструкции указанным числом раз. Другой вариант — указать условие фильтра , которое прерывает выполнение программы на основе таких атрибутов, как идентификатор потока, имя процесса или имя потока.
Нажмите кнопку Закрыть, чтобы закрыть диалоговое окно.
Запустите программу с отладкой, нажав клавиши F5.
В окне консоли нажмите клавишу ВВОД, когда вас попросят ввести имя.
Так как указанное условие (
name
либоnull
, либо String.Empty) удовлетворено, выполнение программы останавливается при достижении точки останова и до выполнения методаConsole.WriteLine
.Выберите окно Локальные, в котором отображаются значения переменных, которые являются локальными для выполняемого метода. В этом случае
Main
является методом, выполняющимся в данный момент. Обратите внимание, что значение переменнойname
""
или String.Empty.Убедитесь, что значение является пустой строкой, введя следующую инструкцию в окне непосредственного выполнения и нажав клавишу Enter . Результатом является
true
.? name == String.Empty
? String.IsNullOrEmpty(name)
Вопросительный знак направляет непосредственное окно, чтобы оценить выражение.
Нажмите F5, чтобы продолжить выполнение программы.
Нажмите любую клавишу, чтобы закрыть окно консоли и остановить отладку.
Снимите точку останова, щелкнув точку в левом поле окна кода. Другие способы удаления точки останова: нажатие клавиши F9 или выбор Отладка > Переключить точку останова, находясь на строке кода.
Пошаговое выполнение программы
Visual Studio также позволяет выполнять пошаговое выполнение строк программы и отслеживать их выполнение. Обычно вы устанавливаете точку останова и следуете за потоком выполнения по небольшой части кода вашей программы. Поскольку эта программа небольшая, вы можете пройти по ней шаг за шагом.
Выберите шаг отладки>в. Другим способом отладки одной инструкции за раз является нажатие клавиши F11.
Visual Studio выделяет и отображает стрелку рядом со следующей строкой выполнения.
C#
Visual Basic
На этом этапе окно локальных переменных показывает, что массив
args
пуст, аname
иcurrentDate
имеют значения по умолчанию. Кроме того, Visual Studio открыл пустое окно консоли.Нажмите F11. Visual Studio теперь выделяет следующую строку выполнения. Окно Локальные остаётся без изменений, и окно консоли остаётся пустым.
C#
Visual Basic
Visual Basic
Нажмите F11. Visual Studio выделяет инструкцию, содержащую назначение переменных
name
. В окне локальные показано, чтоname
являетсяnull
, а в окне консоли отображается строка "Как вас зовут?".Ответьте на запрос, введя строку в окне консоли и нажав клавишу ВВОД. Консоль не отвечает, и введенная строка не отображается в окне консоли, но метод Console.ReadLine, тем не менее, записывает входные данные.
Нажмите F11. Visual Studio выделяет инструкцию, содержащую присвоение переменной
currentDate
. В окне Локальные отображается значение, возвращаемое вызовом метода Console.ReadLine. В окне консоли также отображается строка, введенная в запросе.Нажмите F11. В окне локальные отображается значение переменной
currentDate
после назначения из свойства DateTime.Now. Окно консоли не изменилось.Нажмите F11. Visual Studio вызывает метод Console.WriteLine(String, Object, Object). В окне консоли отображается отформатированная строка.
Выберите Отладка>Выход из шага. Еще одним способом остановить пошаговое выполнение является нажатие клавиш Shift+F11.
В окне консоли отображается сообщение и ожидает нажатия клавиши.
Нажмите любую клавишу, чтобы закрыть окно консоли и остановить отладку.
Использовать конфигурацию сборки релиз
После тестирования Debug версии вашего приложения необходимо скомпилировать и протестировать Release версию. Версия выпуска включает оптимизации компилятора, которые иногда могут негативно повлиять на поведение приложения. Например, оптимизации компилятора, предназначенные для повышения производительности, могут создавать условия гонки в многопоточных приложениях.
Чтобы создать и протестировать релизную версию консольного приложения, измените конфигурацию сборки на панели инструментов с отладка на релиз.
При нажатии F5 или выборе решения сборки в меню Сборка Visual Studio компилирует версию выпуска приложения. Вы можете протестировать это так же, как и версию отладки.
Дальнейшие действия
В этом руководстве вы использовали средства отладки Visual Studio. В следующем руководстве вы публикуете развертываемую версию приложения.