Остановка отладки ipdb в Jupyter
Я использую Юпитер и пытаюсь научиться отлаживать. Однако я не могу завершить выход из режима отладки.
for i in np.arange(1,10, 0.01):
a = someFunc(i)
# I want to check the value of "a" in each iteration
# here!
from IPython.core.debugger import Tracer; Tracer()() #this one triggers the debugger
Если я запускаю этот код и набираю "q" или "exit" в приглашении отладки ipdb, он просто продолжает выполнение кода до следующей точки останова, и я не могу остановить отладку. Как я могу остановить отладку? Я просмотрел документацию, но не смог найти никакой другой команды, кроме "q".
1 ответ
Вы должны начать трассировку, прежде чем войти в цикл. В настоящее время происходит то, что вы создаете новый экземпляр отладчика с каждым шагом цикла.
Ваш код будет выглядеть так:
from IPython.core.debugger import Tracer
for i in np.arange(1,10, 0.01):
a = someFunc(i)
Tracer()()
Вы получите приглашение командной строки, где можно использовать все стандартные функции ipdb. Позвонив в Tracer сразу после выполнения someFunc(i)
Вы получите новое приглашение с каждой итерацией. Для продолжения выполнения до следующей итерации используйте c
команда. Для установки точек останова используйте b <line number>
, q
остановит казнь все вместе.