Руководство. Запуск кода в отладчике в Visual Studio
В этой статье представлен шаг 4 в серии учебников Работа с Python в Visual Studio.
Visual Studio предоставляет возможности для управления проектами, расширенным интерфейсом редактирования, интерактивным окноми полнофункциональная отладка кода Python. На этапе 4 этого учебного руководства вы используете отладчик для пошагового выполнения кода, включая каждую итерацию цикла. В отладчике можно приостановить программу каждый раз, когда выполняются определенные условия. В любой момент, когда программа приостановлена, можно проверить все состояние программы и изменить значение переменных. Такие действия необходимы для нахождения ошибок в программе, а также предоставляют полезные средства для следования точному выполнению программы.
На шаге 4 руководства вы узнаете, как:
- Выполнение кода Python в отладчике в Visual Studio
- Настройка точек останова и условий
- Изучение состояния программы и изменение переменных
- Изучение окон и действий отладчика
Необходимые условия
- Проект приложения Python с файлом Python (.py) с кодом, созданным на шаге 2. Написание и запуск кода Python и шаг 3. Использование окна интерактивного rePL этого руководства.
Подготовка файла Python
Чтобы подготовиться к выполнению отладки, выполните следующие действия, чтобы обновить файл проекта Python, чтобы включить более надежный код:
Откройте файл проекта Python (.py) в редакторе.
Замените код в файле следующим кодом. Эта версия кода расширяет функцию
make_dot_string
, чтобы просмотреть его дискретные шаги в отладчике. Он перемещает циклfor
в функциюmain
и выполняет ее явным образом путем вызова функцииmain
:from math import cos, radians # Create a string with spaces proportional to a cosine of x in degrees def make_dot_string(x): rad = radians(x) # cos works with radians numspaces = int(20 * cos(rad) + 20) # Scale to 0-40 spaces st = ' ' * numspaces + 'o' # Place 'o' after the spaces return st def main(): for i in range(0, 1800, 12): s = make_dot_string(i) print(s) main()
Запуск отладки
Теперь вы готовы начать проверку обновленного кода Python в отладчике.
Убедитесь, что код работает правильно, выбрав Отладка>начать отладку на панели инструментов или используйте сочетание клавиш F5. Эти команды выполняют код в отладчике.
отладчика не обнаруживает никаких проблем, поэтому программа успешно выполняется. Откроется окно вывода, и вы увидите несколько итераций шаблона косинусной волны. Выберите любой ключ, чтобы закрыть окно вывода.
Совет
Чтобы закрыть окно вывода автоматически, когда программа завершится, выберите Инструменты>Параметры, разверните вкладку Python>Отладка и снимите флажок Ожидать ввода при обычном выходе процесса.
Задайте точку останова в инструкции цикла
for
с помощью одного из следующих методов:- Выберите в левом поле для строки кода.
- Щелкните правой кнопкой мыши строку кода и выберите точку останова >Вставить точку останова.
- Поместите курсор вставки в строку кода и выберите Отладка>Точка останова (или используйте сочетание клавиш F9).
Точки останова останавливают выполнение кода в отмеченной точке, чтобы проверить состояние программы. Красная точка отображается на каждой строке с заданной точкой останова.
Запустите отладчик (F5). Выполняющийся код программы останавливается в строке с заданной точкой останова. Теперь можно проверить стек вызовов и проверить переменные для этого состояния выполняемого кода программы.
Visual Studio предоставляет множество способов наблюдения за кодом программы и данными о выполнении, включая следующие окна:
- В стека вызовов отображается журнал вызовов функций и методов по коду программы.
- Определенные переменные, которые находятся в области, отображаются в окне Автозапуск.
- В окне локальных переменных показываются все переменные, которые Visual Studio находит в текущей области (включая функции), даже до их определения в коде.
Чтобы просмотреть полный список доступных окон и действий, выберите Отладка>Windows.
Вы можете открыть окна отладчика, чтобы просмотреть состояние программы при обнаружении точки останова:
Использование действий отладчика
Когда Visual Studio останавливает выполнение кода в точке останова, вы можете воспользоваться несколькими командами для пошагового просмотра кода или выполнения блоков кода перед следующим остановом. Команды доступны в нескольких местах в Visual Studio, включая панель инструментов отладчика, меню отладки, контекстное меню в редакторе кода и доступные через сочетания клавиш.
Панель инструментов отладчика в верхней части окна Visual Studio обеспечивает быстрый доступ к наиболее распространенным командам отладки:
В следующей таблице приведены следующие команды, как они отображаются слева направо на панели инструментов:
Действие | Ярлык | Описание |
---|---|---|
продолжить | F5 | Запустите код до следующей точки останова или до завершения программы. |
Сломать все | CTRL+Alt+Break | Приостановьте программу, которая работает долго. |
остановить отладку | Shift+F5 | Остановите программу в текущей точке и закройте отладчик. |
перезапуск | CTRL+SHIFT+F5 | Остановите выполнение программы в текущей точке и перезапустите её работу с самого начала в отладчике . |
показать следующую инструкцию | Alt+Num+\ | Вернитесь к следующей инструкции для выполнения в коде. Эта команда помогает найти место в коде, где остановлен отладчик. |
Войдите в | F11 | Выполните следующую инструкцию и остановите. Если следующая инструкция является вызовом функции, отладчик входит в функцию и останавливается на первой строке. |
Шаг через | F10 | Выполните следующую инструкцию, в том числе вызов функции (выполнение всего кода) и применение любого возвращаемого значения. Эта команда позволяет легко пропускать функции, которые не нужно отлаживать. |
шаг выхода | Shift+F11 | Запустите код до конца текущей функции, затем перейдите к оператору вызова и приостановите выполнение. Эта команда полезна, если не нужно отлаживать оставшуюся часть текущей функции. |
Выполните следующие действия, чтобы работать с действиями отладчика в коде Python:
Выполните шаг по инструкции цикла
for
с помощью действия step Over.пошаговое приводит к тому, что отладчика запустить текущую строку кода, включая любую вызываемую функцию, и немедленно приостановить работу. После выполнения шага обратите внимание, что переменная
i
теперь определена в окнах локальные и автоматические.Перейти к следующей строке кода, которая вызывает функцию
make_dot_string
.В этом случае Шаг с переходом заставляет отладчика выполнить весь код функции
make_dot_string
и остановиться после её завершения. отладчик не останавливается внутри функции, если там не существует отдельной точки останова.Продолжайте делать шаги по коду еще несколько раз и наблюдайте, как изменяются значения в окне Локальные или Авто.
В окне Локальные или Авто дважды щелкните столбец Значение для переменной, чтобы изменить значение. В этом примере измените значение переменной
s
на'Hello, Python Application'
. Не забудьте заключить значение в одинарные кавычки. Выберите , нажмите Enter или любую область вне указанного значения, чтобы применить изменения.Продолжайте пошаговое выполнение кода с помощью step Into до вызова функции
make_dot_string
.Для функции шаг внутрь заставляет отладчик как вызвать функцию, так и выполнить шаг внутрь кода функции. Когда процесс отладки находится внутри функции, можно изучить ее локальные переменные и пошагово выполнять ее код. В этом примере действие "Перейти в" перемещается в функцию
make_dot_string
.Продолжайте пошаговую отладку с помощью команды "Шаг Внутрь", пока не будет возврата из функции
make_dot_string
.Когда вы достигнете конца кода функции
make_dot_string
, следующим шагом *отладчик возвращается в циклfor
с новым возвращаемым значением в переменнойs
.При повторном переходе к инструкции
print
обратите внимание, что действие Step Into инструкцииprint
не входит в эту функцию. Это связано с тем, что функцияprint
не написана на Python. Это нативный код в среде выполнения Python.Продолжайте использовать шаг в, пока вы снова не окажетесь на середине функции
make_dot_string
. Затем используйте шаг из и обратите внимание, что отладчик возвращается в циклfor
.При шаг выходаотладчик запускает оставшуюся часть функции, а затем автоматически приостанавливается в вызывающем коде. Это действие полезно после того, как вы пройдёте часть длительной функции, если вы хотите завершить наблюдение за этой функцией. Шаг выхода шаги через оставшийся код или до тех пор, пока он не достигнет явной точки останова в вызывающем коде.
Продолжайте выполнение программы до достижения следующей точки останова с помощью Продолжить (F5). Так как в цикле
for
задана точка останова, вы прерываете следующую итерацию.Вы можете подтвердить, что программа продолжает выполняться, наблюдая за изменением значения переменной
s
в окне Локальные.
Использование условий точки останова
Пошаговое выполнение сотен итерации цикла может быть емким, поэтому Visual Studio позволяет добавить условие в точку останова. При установке условия точки останова отладчик приостанавливает программу в точке останова только при выполнении условия.
Ниже показано, как определить условие точки останова в инструкции цикла for
, чтобы отладчик приостанавливается только в том случае, если значение переменной i
превышает 1600:
Чтобы задать условие точки останова, щелкните правой кнопкой мыши красную точку останова и выберите условия или используйте сочетание клавиш ALT+F9>C.
В диалоговом окне параметров точки останова настройте следующие параметры, чтобы создать условие :
Установите тип условия на условное выражение.
Определите оценку условия для True.
Введите
i > 1600
в качестве значения условия.Выберите Закрыть.
Выберите F5, чтобы продолжить отладку и выполнение программы. Обратите внимание, что программа выполняет много итераций, прежде чем она достигнет условной точки останова.
Вы можете убедиться, что отладчик правильно приостанавливает выполнение программы при достижении условной точки останова. Если условие выполнено, в окне локальные отображается значение переменной
i
как1608
.Чтобы запустить программу до завершения, можно отключить точку останова и продолжить выполнение программы.
Наведите указатель мыши на красную точку и выберите Отключитьили щелкните правой кнопкой мыши красную точку и выберите Отключить точку останова.
Выберите Продолжить (или нажмите клавишу F5), чтобы запустить программу.
Когда программа закончится, Visual Studio останавливает сеанс отладки и возвращается в режим редактирования.
Можно также удалить точку останова. Выберите красную точку или щелкните правой кнопкой мыши точку и выберите Удалить точку останова. Это действие также удаляет все определенные условия.
Совет
В некоторых ситуациях, например при сбое запуска самого интерпретатора Python, окно вывода Python может закрыться сразу после завершения программы без приостановки и отображения приглашения Нажмите любую клавишу, чтобы продолжить. Чтобы принудительно принудить приостановку и запрос, добавьте аргумент -i
в поле Выполнить аргументы интерпретатора>на вкладке "Отладка". Этот аргумент помещает интерпретатор Python в интерактивный режим после выполнения кода. Программа ожидает, когда вы выберете Ctrl+Z+ВВОД, чтобы закрыть окно.