Comme je le sais, %debug magic
peut faire le débogage dans une cellule.
Cependant, j'ai des appels de fonction sur plusieurs cellules.
Par exemple,
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
Ce que j'ai essayé:
J'ai essayé de définir
%debug
dans la première ligne de cell-1. Mais il entre en mode débogage immédiatement, avant même d'exécuter cell-2.J'ai essayé d'ajouter
%debug
la ligne juste avant le codereturn do_some_thing_about(b)
. Mais alors le code s'exécute pour toujours, ne s'arrête jamais.
Quelle est la bonne façon de définir un point d'arrêt dans le bloc-notes ipython?
import ipdb; ipdb.set_trace()
dans une cellule de cahier, il ditMultipleInstanceError: Multiple incompatible subclass instances of TerminalIPythonApp are being created.
Vous pouvez utiliser à l'
ipdb
intérieur de jupyter avec:Edit : les fonctions ci-dessus sont obsolètes depuis IPython 5.1. Voici la nouvelle approche:
Ajoutez
set_trace()
là où vous avez besoin d'un point d'arrêt. Tapezhelp
pour lesipdb
commandes lorsque le champ de saisie apparaît.la source
Tracer
a été amorti. Maintenant, cela fonctionne de cette façon:from IPython.core.debugger import set_trace
etset_trace()
évoque un point d'arrêt. Source: davidhamann.de/2017/04/22/debugging-jupyter-notebooksfrom IPython.core.debugger import set_trace;set_trace()
Votre fonction de retour est en ligne avec la fonction def (fonction principale), vous devez lui donner un onglet. Et utilise
au lieu de
pour déboguer la cellule entière non seulement la ligne. J'espère que cela vous aidera peut-être.
la source
Vous pouvez toujours ajouter ceci dans n'importe quelle cellule:
et le débogueur s'arrêtera sur cette ligne. Par exemple:
la source
ipdb
est un refactor du débogueur Python qui est plus étroitement intégré à IPython.pdb
est intégré.ipdb
peut également être utilisé en dehors du shell ipython et est livré avec certaines commodités telles que l'achèvement des onglets.En Python 3.7, vous pouvez utiliser la fonction breakpoint () . Entrez simplement
partout où vous souhaitez que l'exécution s'arrête et à partir de là, vous pouvez utiliser les mêmes commandes pdb (r, c, n, ...) ou évaluer vos variables.
la source
Tapez
import pdb
simplement le notebook jupyter, puis utilisez cette feuille de triche pour déboguer. C'est très pratique.c
-> continuer,s
-> pas,b 12
-> définir le point d'arrêt à la ligne 12 et ainsi de suite.la source
pdb.set_trace()
là où je veux définir un point d'arrêt, car leb line_no
ne fonctionne pas dans Jupyter Notebook et fonctionne bien sur python IDLE.Après avoir obtenu une erreur, dans la cellule suivante, exécutez simplement
%debug
et c'est tout.la source
La
%pdb
commande magique est également bonne à utiliser. Dites simplement%pdb on
et par la suite, lepdb
débogueur fonctionnera sur toutes les exceptions, quelle que soit la profondeur de la pile d'appels. Très utile.Si vous avez une ligne particulière que vous souhaitez déboguer, il suffit de lever une exception à cet endroit (souvent vous l'êtes déjà!) Ou d'utiliser la
%debug
commande magique suggérée par d'autres personnes.la source
Je viens de découvrir PixieDebugger . Même si je n'ai pas encore eu le temps de le tester, cela semble vraiment la manière la plus similaire de déboguer la façon dont nous sommes utilisés en ipython avec ipdb
Il a également un onglet "évaluer"
la source
Un débogueur natif est mis à disposition en tant qu'extension de JupyterLab. Sorti il y a quelques semaines, celui-ci peut être installé en obtenant l'extension appropriée, ainsi que le noyau xeus-python (qui vient notamment sans les magies bien connues des utilisateurs d'ipykernel):
Cela permet une expérience de débogage visuelle bien connue des autres IDE.
Source: un débogueur visuel pour Jupyter
la source