Насколько я знаю, %debug magic
отладку можно делать в пределах одной ячейки.
Однако у меня есть вызовы функций в нескольких ячейках.
Например,
In[1]: def fun1(a)
def fun2(b)
# I want to set a breakpoint for the following line #
return do_some_thing_about(b)
return fun2(a)
In[2]: import multiprocessing as mp
pool=mp.Pool(processes=2)
results=pool.map(fun1, 1.0)
pool.close()
pool.join
Что пробовал:
Я пробовал установить
%debug
в первой строке ячейки-1. Но он сразу переходит в режим отладки, даже до выполнения ячейки-2.Я пытался добавить
%debug
строку прямо перед кодомreturn do_some_thing_about(b)
. Но тогда код работает вечно, никогда не останавливается.
Как правильно установить точку останова в ноутбуке ipython?
import ipdb; ipdb.set_trace()
в ячейке записной книжки, там написаноMultipleInstanceError: Multiple incompatible subclass instances of TerminalIPythonApp are being created.
Вы можете использовать
ipdb
внутри jupyter с:Изменить : указанные выше функции устарели с IPython 5.1. Это новый подход:
Добавьте
set_trace()
туда, где вам нужна точка останова. Введитеhelp
дляipdb
команд , когда появляется поле ввода.источник
Tracer
был обесценен. Теперь это работает так:from IPython.core.debugger import set_trace
иset_trace()
вызывает точку останова. Источник: davidhamann.de/2017/04/22/debugging-jupyter-notebooksfrom IPython.core.debugger import set_trace;set_trace()
Ваша функция возврата находится в строке функции def (основная функция), вы должны указать ей одну вкладку. И использовать
вместо того
для отладки всей ячейки, а не только строки. Надеюсь, может это тебе поможет.
источник
Вы всегда можете добавить это в любую ячейку:
и отладчик остановится на этой строке. Например:
источник
ipdb
является рефакторингом Python Debugger, который более тесно интегрирован с IPython.pdb
встроенipdb
также может использоваться вне оболочки ipython и имеет некоторые удобства, такие как завершение табуляции.В Python 3.7 вы можете использовать функцию breakpoint () . Просто введите
где бы вы ни хотели остановить выполнение, вы можете использовать те же команды pdb (r, c, n, ...) или оценивать свои переменные.
источник
Просто введите
import pdb
jupyter notebook, а затем используйте эту шпаргалку для отладки. Это очень удобно.c
-> продолжить,s
-> шаг,b 12
-> установить точку останова на строке 12 и так далее.источник
pdb.set_trace()
, такb line_no
это копирую и вставляю туда, где я хочу установить точку останова, поскольку она не работает в Jupyter Notebook и хорошо работает на python IDLE.После того, как вы получите ошибку, в следующей ячейке просто запустите
%debug
и все.источник
Также можно использовать
%pdb
волшебную команду . Просто скажите,%pdb on
и впоследствииpdb
отладчик будет работать со всеми исключениями, независимо от того, насколько глубоко в стеке вызовов. Очень кстати.Если у вас есть конкретная строка, которую вы хотите отлаживать, просто вызовите там исключение (часто это уже происходит!) Или используйте
%debug
волшебную команду, которую предлагают другие люди.источник
Я только что открыл для себя PixieDebugger . Даже подумав, что у меня еще не было времени протестировать его, это действительно кажется наиболее похожим способом отладки, как мы используем в ipython с ipdb.
Также есть вкладка "оценка"
источник
Собственный отладчик становится доступным как расширение JupyterLab. Выпущенный несколько недель назад, его можно установить, получив соответствующее расширение, а также ядро xeus-python (которое, в частности, поставляется без магии, хорошо известной пользователям ipykernel):
Это обеспечивает визуальную отладку, хорошо известную по другим IDE.
Источник: визуальный отладчик для Jupyter.
источник