Найти в Дзене
Властелин машин

Все секреты отладки в Jupyter

Оглавление

Проведем обзор инструментов отладки в Jupyter, которые предназначены для ускорения процесса изменения кода и быстрого поиска ошибок.

Интерактивная отладка

В этом поможет модуль pdb. Напишем с его помощью простые функции установки точки останова и отладки функции с заданными аргументами, затем протестируем их на простом примере. Для установки точки останова внесите в произвольную строку ячейки код вызова set_trace:

Для отладки функции достаточно вызвать debug следующим образом:

-2

Команды работы с отладчиком

c - продолжить выполнение кода

n - выполнить строку и перейти к другой

s - переместиться внутрь функции

q - выйти из отладчика

u - перемещение вверх по стеку вызовов

d - перемещение вниз по стеку вызовов

a - вывести аргументы функции

interact - вход в интерактивный режим

Для вывода значений переменных следует использовать перед их именами восклицательный знак, так как иногда они совпадают с командами:

-3

Если вы захотите исполнить произвольную команду, то следует войти в интерактивный режим посредством исполнения - interact:

-4

А вот для выхода из интерактивного режима потребуется использовать трюки. В частности, потребуется передать оболочке сигнал окончания ввода, который имеет код \x04. Проще всего это сделать исполнив:

from pandas.io.clipboard import copy; copy("\x04")

а затем - ctrl+v:

-5

Посмертная отладка

Полезная возможность в любой оболочке, исполняющейся в окружении, имеющем пакет IPython. После исключения набираем %debug и переходим в то место стека вызовов, где оно было возбуждено. Затем посредством u/d можно найти интересующий участок кода и дальше экспериментировать, имея доступ к объектам на момент "падения".

Также имеется магическая команда %pdb, которая устанавливает режим принудительного вызова отладчика после любого исключения.

Отладка без вмешательства в код

Если вы ограничитесь пошаговым выполнением кода и просмотром значений переменных простых типов, то вам достаточно установить пакет xeus-python.

Так как в Windows менеджер пакетов pip наотрез отказывался устанавливать его, пришлось создать conda окружение и сделать это посредством следующей команды:

conda install -c conda-forge xeus-python

Для применения отладчика потребуется выбрать ядро XPython и протянуть ползунок отладки в положение включения (средняя панель, правый верхний угол):

-6

-7