Перейти к содержанию

Отладка блоков кода

Назначение отладчика

Отладчик позволяет пошагово выполнять пользовательский код в блоке Python. Отладчик может пригодиться, когда код из блока Python проблематично переносить в среду разработки на локальном компьютере: например, когда из кода выполняются обращения к входам блока, либо когда в коде выполняются обращения к базам данных или веб-сервисам, которые недоступны напрямую с пользовательского компьютера.

Отладчик предоставляет базовый функционал:

  • Точки останова;
  • Построчное перемещение по коду;
  • Просмотр переменных;
  • Просмотр стека вызовов и перемещение по нему.

Доступны дополнительные функции: условные точки останова и выполнение произвольных однострочных выражений.

Базовые термины

  • Сессия отладки - разовый запуск кода на отладку
  • Для одного блока Python доступен единовременный запуск лишь одной сессии отладки.
  • Сессии имеют ограничение времени на бездействие пользователя. Сессия существует 24 часа с момента последнего действия пользователя, а затем удаляется.
  • Точка останова - указание отладчику остановиться на конкретной строке кода. При переходе на точку останова отладчик переходит в режим ожидания команд пользователя;
  • Шаг с заходом / шаг с выходом / шаг с обходом - способы перемещения по коду. Подробнее в разделе "Перемещение по коду";
  • Стек вызовов - цепочка последовательных вызовов функции в коде пользователя. Подробнее в разделе "Стек вызовов".

Управление отладкой

Запуск отладчика

Чтобы запустить отладчик, нажмите кнопку "Начало отладки".

После запуска приложение выведет сообщение о запуске отладки:

При запуске отладки приложение инициализирует отладчик, и начинается выполнение кода до ближайшей точки останова. Когда отладчик дойдёт до точки останова и перейдёт в режим ожидания команд, будет подсвечена соответствующая строка кода:

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

Чтобы установить точку останова, кликните по номеру выбранной строки.

Чтобы удалить точку останова, повторно кликните по номеру выбранной строки

Редактирование точек останова доступно и при запущенной сессии отладки, но только на точках останова. При выполнении кода редактирование невозможно.

Отладчик не учитывает точки останова в пустых строках кода.

Отключение точек останова

Точки останова отключаются нажатием кнопки "Выключить точки останова".

Условные точки останова

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

Перемещение по коду

Находясь в точке останова, отладчик поддерживает следующие способы перемещения по коду:

  • Шаг с заходом выполняет очередную инструкцию, а затем переходит в режим ожидания. Если шаг с заходом выполняется на вызове функции, то отладчик переходит в функцию и останавливается в её начале;
  • Шаг с обходом аналогичен шагу с заходом, но в отличие от него не останавливается при переходе в новую функцию. Вместо этого отладчик код внутри функции и переходит на строку, следующую за точкой останова;
  • Шаг с выходом выполняет весь оставшийся код функции и затем возвращает управление разработчику.

При выполнении шага с заходом отладчик не переходит в код импортируемых модулей

Редактор выражений

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

Просмотр данных в точке останова

Переменные

На точках останова доступен список переменных на текущем шаге отладки. Если переменная является составной и имеет атрибуты, то отладчик позволяет просматривать их.

Для переменных контейнерного типа (списки, словари, numpy-массивы) поддерживается постраничный просмотр элементов.

Стек вызовов

Доступен просмотр стека вызовов и перемещение по нему. При перемещении по стеку в списке переменных отображаются переменные, соответствующие выбранному вызову стека.

Работа с исключениями

При возникновении ошибки код остановится на строке, в которой она возникла. В списке переменных при этом появится системная переменная exception, в которой содержится описание ошибки.