Область применения:Visual StudioVisual Studio для Mac Visual Studio Code
Visual Studio предоставляет возможности для управления проектами, расширенные возможности редактирования, окно Интерактивный режим и инструменты полнофункциональной отладки для кода Python. В отладчике можно выполнять код пошагово, включая каждую итерацию цикла. Кроме того, можно приостанавливать программу, если выполняются определенные условия. При приостановке программы в отладчике можно полностью изучить ее состояние и изменить значения переменных. Эти действия необходимы для выявления источников ошибок в программе. Кроме того, они позволяют отслеживать поток работы программы.
Замените код в файле PythonApplication1.py приведенным ниже кодом. Этот вариант кода расширяет make_dot_string , что позволяет изучать отдельные шаги в отладчике. Он также помещает цикл for в функцию 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, выберите Отладка и снимите флажок Ожидать входные данные при нормальном завершении работы процесса: Дополнительные сведения об отладке и инструкции по настройке аргументов сценария и интерпретатора, см. в разделе Отладка кода Python.
Установите точку останова в операторе for , щелкнув один раз серое поле возле этой строки или поместив курсор в этой строке и выбрав команду Отладка>Точка останова (клавиша F9). В сером поле появляется красная точка для указания точки останова (как показано ниже стрелкой):
Снова запустите отладчик (F5), и вы увидите, что выполнение кода остановится в строке с этой точкой останова. Здесь можно просмотреть стек вызовов и переменные. Переменные, относящиеся к области действия, приводятся в окне Видимые, если они определены. В нижней части этого окна можно также перейти к представлению Локальные.В нем отображаются все переменные, которые найдены средой Visual Studio в текущей области действия (включая функции), даже если они еще не определены.
Обратите внимание на панель инструментов отладки (показана ниже) в верхней части окна Visual Studio. Эта панель инструментов предоставляет быстрый доступ к наиболее часто используемым командам отладки (которые также находятся в меню Отладка). Кнопки располагаются слева направо в следующем порядке:
Программа выполняется до следующей точки останова или до конца.
Прервать все (Ctrl+Alt+Прервать)
Приостанавливает работу долго выполняющейся программы.
Остановить отладку (Shift+F5)
Программа останавливается в текущем месте, и работа отладчика завершается.
Перезапустить (Ctrl+Shift+F5)
Программа останавливается в текущем месте и перезапускается в отладчике с начала.
Показать следующую инструкцию (ALT+NUM*)
Переключается на следующую строку кода для выполнения. Эта команда полезна в случае, если вы просматриваете код во время сеанса отладки и хотите быстро перейти к месту, где работа отладчика была приостановлена.
Шаг с заходом (F11)
Выполняет следующую строку кода с заходом в вызываемые функции.
Шаг с обходом (F10)
Выполняет следующую строку кода без захода в вызываемые функции.
Шаг с выходом (Shift+F11)
Текущая функция выполняется до конца, после чего выполнение приостанавливается в вызывающем коде.
Выполните применительно к оператору for шаг с обходом с помощью команды Шаг с обходом. Пошаговое выполнение означает, что отладчик выполняет текущую строку кода, включая все вызовы функций, после чего сразу приостанавливает выполнение программы. Обратите внимание на то, как в коде переменная i теперь определена в окнах Локальные и Видимые.
Выполните шаг с обходом в следующей строке, в которой вызывается функция make_dot_string . Шаг с обходом здесь нужен для того, чтобы отладчик выполнил всю функцию make_dot_string и приостановил работу, когда она завершится. Внутри функции работа отладчика не останавливается, если в ней нет отдельной точки останова.
Выполните еще несколько шагов с обходом, наблюдая за тем, как меняются значения переменных в окнах Локальные и Видимые.
В окне Локальные или Видимые в столбце Значение дважды щелкните поле переменной i или s , чтобы изменить ее значение. Чтобы применить изменение, нажмите клавишу Enter или щелкните в любой области за пределами поля со значением.
Продолжите пошаговое выполнение кода с помощью команды Шаг с заходом. Шаг с заходом означает, что отладчик заходит во все вызываемые функции, о которых у него есть отладочные сведения, например make_dot_string . Внутри функции make_dot_string вы можете изучать ее локальные переменные и пошагово выполнять ее код.
Продолжайте пошагово выполнять код с помощью команды Шаг с заходом и обратите внимание на то, что после достижения конца функции make_dot_string вы возвращаетесь в цикл for , а переменная s принимает новое значение. Когда вы снова перейдете к оператору print , обратите внимание на то, что выполнение шага с заходом для print не приводит к заходу в эту функцию. Связано это с тем, что функция print не написана на языке Python, а представляет собой машинный код внутри среды выполнения Python.
Продолжайте выполнять шаги с заходом, пока вы снова не попадете в функцию make_dot_string . Теперь используйте команду Шаг с выходом и обратите внимание на то, что вы вернетесь в цикл for . Команда Шаг с выходом означает, что отладчик выполняет функцию до конца, а затем автоматически приостанавливает выполнение в вызывающем коде. Эту команду рекомендуется использовать, если вы уже обработали какую-то часть длинной функции, которая требует отладки. Она обработает остальную часть и не будет настраивать явную точку останова в вызывающем коде.
Чтобы продолжить выполнение программы после достижения очередной точки останова, используйте команду Продолжить (F5). Так как вы установили точку останова в цикле for , при следующей итерации произойдет остановка.
Пошаговое выполнение сотен итераций цикла может быть утомительным, поэтому в Visual Studio к точке останова можно добавить условие. В этом случае отладчик будет приостанавливать выполнение программы в точке останова, только если условие соблюдается. Например, можно настроить условие для точки останова в операторе for так, чтобы выполнение в ней прерывалось, только если значение переменной i превышает 1600. Чтобы задать это условие, щелкните правой кнопкой мыши красную точку, обозначающую точку останова, и выберите пункт Условия (сочетание клавиш Alt+F9>C). В появившемся всплывающем окне Параметры точки останова введите i > 1600 в качестве выражения и выберите Закрыть. Нажмите клавишу F5, чтобы продолжить работу, и обратите внимание на то, что до того, как произойдет следующий останов, будет выполнено несколько итераций.
Чтобы программа выполнялась до конца, отключите точку останова, щелкнув в поле точку правой кнопкой мыши и выбрав команду Выключить точку останова (CTRL+F9). Затем выберите команду Продолжить (или нажмите клавишу F5), чтобы запустить программу. Когда выполнение программы завершится, сеанс отладки в Visual Studio будет закрыт и вы вернетесь в режим редактирования. Можно также удалить точку останова, выбрав его точку или щелкнув правой кнопкой мыши точку и выбрав Удалить точку останова. При этом также удаляются все ранее заданные условия.
В некоторых ситуациях, например, когда не удается запустить интерпретатор Python, окно выходных данных может автоматически закрываться сразу после появления, из-за чего увидеть сообщения об ошибках невозможно. Если такое происходит, в обозревателе решений щелкните проект правой кнопкой мыши, выберите пункт Свойства, откройте вкладку Отладка и добавьте -i в поле Аргументы интерпретатора. Этот аргумент вынуждает интерпретатор перейти в интерактивный режим после завершения программы, оставив окно открытым, пока вы не нажмете клавиши CTRL+Z>ВВОД для выхода.