Отладка блоков кода
Назначение отладчика
Отладчик позволяет пошагово выполнять пользовательский код в блоке Python. Отладчик может пригодиться, когда код из блока Python проблематично переносить в среду разработки на локальном компьютере: например, когда из кода выполняются обращения к входам блока, либо когда в коде выполняются обращения к базам данных или веб-сервисам, которые недоступны напрямую с пользовательского компьютера.
Отладчик предоставляет базовый функционал:
- Точки останова;
- Построчное перемещение по коду;
- Просмотр переменных;
- Просмотр стека вызовов и перемещение по нему.
Доступны дополнительные функции: условные точки останова и выполнение произвольных однострочных выражений.
Базовые термины
- Сессия отладки - разовый запуск кода на отладку
- Для одного блока Python доступен единовременный запуск лишь одной сессии отладки.
- Сессии имеют ограничение времени на бездействие пользователя. Сессия существует 24 часа с момента последнего действия пользователя, а затем удаляется.
- Точка останова - указание отладчику остановиться на конкретной строке кода. При переходе на точку останова отладчик переходит в режим ожидания команд пользователя;
- Шаг с заходом / шаг с выходом / шаг с обходом - способы перемещения по коду. Подробнее в разделе "Перемещение по коду";
- Стек вызовов - цепочка последовательных вызовов функции в коде пользователя. Подробнее в разделе "Стек вызовов".
Управление отладкой
Запуск отладчика
Чтобы запустить отладчик, нажмите кнопку "Начало отладки".
После запуска приложение выведет сообщение о запуске отладки:
При запуске отладки приложение инициализирует отладчик, и начинается выполнение кода до ближайшей точки останова. Когда отладчик дойдёт до точки останова и перейдёт в режим ожидания команд, будет подсвечена соответствующая строка кода:
Точки останова
Чтобы установить точку останова, кликните по номеру выбранной строки.
Чтобы удалить точку останова, повторно кликните по номеру выбранной строки
Редактирование точек останова доступно и при запущенной сессии отладки, но только на точках останова. При выполнении кода редактирование невозможно.
Отладчик не учитывает точки останова в пустых строках кода.
Отключение точек останова
Точки останова отключаются нажатием кнопки "Выключить точки останова".
Условные точки останова
Кроме стандартных точек останова, поддерживаются условные точки останова. В них задаётся логическое выражение на языке Python. Отладчик останавливается в условной точке, если логическое выражение истинно. Код не будет остановлен, если выражение не истинно, либо в нем содержится синтаксическая ошибка или исключение. Чтобы задать условную точку останова, нужно кликнуть правой кнопкой мыши по номеру выбранной строки. Откроется окно для задания условного выражения:
Перемещение по коду
Находясь в точке останова, отладчик поддерживает следующие способы перемещения по коду:
- Шаг с заходом выполняет очередную инструкцию, а затем переходит в режим ожидания. Если шаг с заходом выполняется на вызове функции, то отладчик переходит в функцию и останавливается в её начале;
- Шаг с обходом аналогичен шагу с заходом, но в отличие от него не останавливается при переходе в новую функцию. Вместо этого отладчик код внутри функции и переходит на строку, следующую за точкой останова;
- Шаг с выходом выполняет весь оставшийся код функции и затем возвращает управление разработчику.
При выполнении шага с заходом отладчик не переходит в код импортируемых модулей
Редактор выражений
В отладчике доступен редактор выражений. Он позволяет выполнить произвольное однострочное выражение на языке Python, находясь на точке останова. При написании выражения можно обращаться к переменным, доступным в коде на текущем шаге отладки.
Просмотр данных в точке останова
Переменные
На точках останова доступен список переменных на текущем шаге отладки. Если переменная является составной и имеет атрибуты, то отладчик позволяет просматривать их.
Для переменных контейнерного типа (списки, словари, numpy-массивы) поддерживается постраничный просмотр элементов.
Стек вызовов
Доступен просмотр стека вызовов и перемещение по нему. При перемещении по стеку в списке переменных отображаются переменные, соответствующие выбранному вызову стека.
Работа с исключениями
При возникновении ошибки код остановится на строке, в которой она возникла. В списке переменных при этом появится системная переменная exception, в которой содержится описание ошибки.










