Упражнение. Установка точек останова
Точки останова используются для приостановки выполнения программы в процессе отладки. Это позволяет отслеживать переменные и проверять последовательность выполнения кода. Точки останова — отличный способ запуска процесса отладки.
Установка точки останова
Ранее в этом модуле вы выполнили упражнение, в котором вы запустили приложение в отладчике. Приложение отображало "приветственные сообщения" на панели DEBUG CONSOLE. В конце упражнения вы заметили, что код повторяет приветствие Эндрю неожиданно.
В этом упражнении вы будете использовать точку останова, чтобы определить проблему.
Убедитесь, что файл Program.cs содержит следующий пример кода:
/* This code uses a names array and corresponding methods to display greeting messages */ string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" }; string messageText = ""; foreach (string name in names) { if (name == "Sophia") messageText = SophiaMessage(); else if (name == "Andrew") messageText = AndrewMessage(); else if (name == "AllGreetings") messageText = SophiaMessage(); messageText = messageText + "\n\r" + AndrewMessage(); Console.WriteLine(messageText + "\n\r"); } bool pauseCode = true; while (pauseCode == true); static string SophiaMessage() { return "Hello, my name is Sophia."; } static string AndrewMessage() { return "Hi, my name is Andrew. Good to meet you."; }Используйте средства отладчика Visual Studio Code, чтобы задать точку останова в первой строке
foreachкода внутри цикла.
Подсказка
Одним из простых вариантов включения и отключения точки останова является щелчок левой кнопкой мыши по области слева от номера строки. Точки останова также можно задать с помощью
Runменю и с помощью сочетаний клавиш.В меню "Запуск " выберите "Начать отладку".
Обратите внимание, что выполнение кода приостанавливается в точке останова и выделена текущая строка кода в редакторе.
На панели инструментов отладки выберите Войти в.
Указатель мыши можно навести на кнопки на панели инструментов элементов управления отладки , чтобы отобразить метки кнопки.
Обратите внимание, что выполнение кода переходит к следующей строке кода и приостанавливается:
messageText = SophiaMessage();Эта строка кода назначает возвращаемое значение
SophiaMessageметода строковой переменнойmessageText.Подумайте, почему выбор Step Into привел к такому результату.
- Кнопка "Шаг В " используется для перехода к следующей инструкции исполняемого файла.
- Поскольку первым элементом в массиве
namesявляетсяSophia, а операторifпроверяет имяSophia, выражение оценивается какtrue, и выполнение кода переходит в блок кода оператораif.
На панели инструментов отладки выберите Войти в.
Обратите внимание, что выполнение кода переходит к методу
SophiaMessageи приостанавливается.Кнопка "Шаг В" продвинулась до следующей исполняемой строки кода. Следующая исполняемая строка кода не является следующим номером строки в файле, это следующая инструкция в пути выполнения. В этом случае следующая инструкция исполняемого файла является точкой входа метода
SophiaMessage.На панели инструментов элементов управления отладки нажмите кнопку "Шаг выхода".
Обратите внимание, что выполнение кода возвращается в строку кода, которая вызывает
SophiaMessageметод и приостанавливается.Потратьте минуту, чтобы подумать, почему выбор Step Out привел к этому результату.
При выполнении метода кнопка Step Out завершает оставшиеся строки текущего метода, а затем возвращается в контекст выполнения, который вызвал метод.
На панели инструментов отладки выберите Войти в.
Обратите внимание, что выполнение кода переходит к следующей строке кода и приостанавливается:
messageText = messageText + "\n\r" + AndrewMessage();Рассмотрим, почему выполнение расширено до этой строки кода.
Хотя отступ кода подразумевает, что эта строка кода является частью блока кода для инструкции
else if, это не так. Использование фигурных скобок{}для определения блоков кода для этойif - else ifструктуры помогло бы избежать этой ошибки. Когда код выполняется, сообщение Эндрю будет добавляться вmessageTextкаждый раз при итерации цикла.
Проверка обновлений кода
После изоляции проблемы в коде необходимо обновить код, а затем убедиться, что проблема устранена.
На панели инструментов элементов управления отладки нажмите кнопку "Остановить".
Минуту, чтобы исправить логику кода.
У вас есть несколько вариантов устранения обнаруженной проблемы в коде. Рассмотрим пример.
Можно сохранить существующие строки кода и добавить фигурные скобки
{}в структуруifдля каждого блока кода.Вы можете объединить две строки кода, которые следуют заключительной
else ifинструкции, формируя одну инструкцию следующим образом:else if (name == "AllGreetings") messageText = SophiaMessage() + "\n\r" + AndrewMessage();
В любом случае обновленный код должен включать вызов
AndrewMessageв блок кода, когдаname == "AllGreetings".В меню "Файл" нажмите кнопку "Сохранить".
Используйте средства пользовательского интерфейса отладчика, чтобы очистить точку останова, заданную ранее.
В меню "Запуск " выберите "Начать отладку".
Убедитесь, что код теперь выдает ожидаемые результаты.
Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you. Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you.На панели инструментов элементов управления отладки нажмите кнопку "Остановить".
Поздравляю! Вы успешно использовали отладчик Visual Studio Code, чтобы изолировать и исправить проблему логики.
Обзор
Ниже приведены некоторые важные моменты, которые следует помнить из этого урока:
- Используйте точки останова для приостановки выполнения кода во время сеанса отладки.
- Используйте Step Into на панели элементов управления отладкой, чтобы просмотреть следующую исполняемую строку кода.
- Используйте шаг выхода из панели инструментов элементов управления отладки , чтобы перейти к текущему методу и вернуться к строке кода, вызываемой методом.