Интерактивная отладка в ноутбуке IPython (Jupyter)

для отладки моего кода python я использую ipdb библиотека, и использовать set_trace() команда для размещения точки останова. Как только код достигает там, я получаю интерактивную оболочку с ipdb> подскажите, что я могу исследовать локальные переменные с автозаполнением вкладки.

в ноутбуке IPython (Jupyter), однако, ipdb.set_trace() не работает. Как предложено этим сообщением: использование ipdb для отладки кода python в одной ячейке (jupyter или Ipython)

Я использую следующие альтернатива интерактивной отладки:

from IPython.core.debugger import Tracer
Tracer()() #this one triggers the debugger

это дает мне ipdb> приглашение, но автозаполнение вкладки недоступно. Есть ли в любом случае, чтобы включить автозаполнение для интерактивной отладки с помощью IPython notebook? Это чрезвычайно полезно, особенно когда у вас много переменных с длинными именами.

1 ответов


в Python 3.7 вы можете использовать точка останова () функции

эта функция сбрасывает вас в отладчик на сайте вызова. В частности, он вызывает sys.breakpointhook (), передача args и kws сквозной. По умолчанию, системы.вызовы breakpointhook() распределительная плата.set_trace () не ожидает аргументов. В этом случае это чисто функция удобства, поэтому вам не нужно явно импортировать pdb или введите столько кода, чтобы ввести отладчик. Однако, системный.breakpointhook() можно установить на другую функцию, и breakpoint () будет автоматически вызовите это, позволяя вам перейти в отладчик выбора.