Jak wiem, %debug magic
można debugować w ramach jednej komórki.
Jednak mam wywołania funkcji w wielu komórkach.
Na przykład,
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
Co próbowałem:
Próbowałem ustawić
%debug
w pierwszej linii komórki-1. Ale natychmiast wchodzi w tryb debugowania, nawet przed wykonaniem cell-2.Próbowałem dodać
%debug
wiersz tuż przed kodemreturn do_some_thing_about(b)
. Ale wtedy kod działa wiecznie, nigdy się nie zatrzymuje.
Jaki jest właściwy sposób ustawienia punktu przerwania w notebooku ipython?
import ipdb; ipdb.set_trace()
w komórce notesu, jest napisaneMultipleInstanceError: Multiple incompatible subclass instances of TerminalIPythonApp are being created.
Możesz używać
ipdb
inside jupyter z:Edycja : powyższe funkcje są przestarzałe od wersji IPython 5.1. Oto nowe podejście:
Dodaj miejsce, w
set_trace()
którym potrzebujesz punktu przerwania. Wpiszhelp
doipdb
poleceń, gdy pojawi się pole wprowadzania.źródło
Tracer
została umorzona. Teraz działa w ten sposób:from IPython.core.debugger import set_trace
iset_trace()
wywołuje punkt przerwania. Źródło: davidhamann.de/2017/04/22/debugging-jupyter-notebooksfrom IPython.core.debugger import set_trace;set_trace()
Twoja funkcja zwrotna jest w wierszu funkcji def (funkcja główna), musisz podać jej jedną tabulację. I użyć
zamiast
debugować całą komórkę, a nie tylko linię. Mam nadzieję, że to ci pomoże.
źródło
Zawsze możesz dodać to w dowolnej komórce:
a debugger zatrzyma się w tej linii. Na przykład:
źródło
ipdb
jest refaktorem Python Debugger, który jest ściślej zintegrowany z IPythonem.pdb
jest wbudowany.ipdb
może być również używany poza powłoką ipython i zawiera pewne udogodnienia, takie jak uzupełnianie zakładek.W Pythonie 3.7 możesz użyć funkcji breakpoint () . Po prostu wejdź
gdziekolwiek chcesz, aby runtime się zatrzymał i stamtąd możesz użyć tych samych poleceń pdb (r, c, n, ...) lub ocenić swoje zmienne.
źródło
Po prostu wpisz
import pdb
notatnik jupyter, a następnie użyj tej ściągawki do debugowania. To bardzo wygodne.c
-> kontynuuj,s
-> krok,b 12
-> ustaw punkt przerwania w linii 12 i tak dalej.źródło
pdb.set_trace()
w miejscu, w którym chcę ustawić punkt przerwania, ponieważb line_no
nie działa w Jupyter Notebook i działa dobrze na Pythonie IDLE.Po pojawieniu się błędu w następnej komórce po prostu uruchom
%debug
i to wszystko.źródło
%pdb
Komenda magia jest dobra do wykorzystania jako dobrze. Po prostu powiedz,%pdb on
a następniepdb
debugger będzie działał na wszystkich wyjątkach, bez względu na to, jak głęboko w stosie wywołań. Bardzo poręczne.Jeśli masz konkretną linię, którą chcesz debugować, po prostu zgłoś tam wyjątek (często już jesteś!) Lub użyj
%debug
magicznego polecenia, które sugerowali inni ludzie.źródło
Właśnie odkryłem PixieDebugger . Nawet myśląc, że nie miałem jeszcze czasu, aby go przetestować, wydaje się, że to naprawdę najbardziej podobny sposób debugowania sposobu, w jaki jesteśmy używani w ipythonie z ipdb
Zawiera również zakładkę „Ocena”
źródło
Natywny debugger jest udostępniany jako rozszerzenie JupyterLab. Wydany kilka tygodni temu, można go zainstalować, pobierając odpowiednie rozszerzenie, a także jądro xeus-python (które w szczególności jest dostarczane bez magii dobrze znanej użytkownikom ipykernel):
Umożliwia to wizualne debugowanie dobrze znane z innych IDE.
Źródło: wizualny debugger dla Jupyter
źródło