J'essaye de déboguer du code dans un cahier de Jupyter. J'ai essayé 4 méthodes différentes, et ils souffrent tous du même problème:Les débogueurs n'agissent pas correctement sur les ordinateurs portables Jupyter
--Return--
None
> <ipython-input-22-04c6f5c205d1>(3)<module>()
1 import IPython.core.debugger as dbg
2 dber = dbg.Tracer()
----> 3 dber()
4 tst = huh.plot(ret_params=True)
5 type(tst)
ipdb> n
> y:\miniconda\lib\site-packages\ipython\core\interactiveshell.py(2884)run_code()
2882 finally:
2883 # Reset our crash handler in place
-> 2884 sys.excepthook = old_excepthook
2885 except SystemExit as e:
2886 if result is not None:
comme vous pouvez le voir, la commande n
, qui, de ce que je compris de la documentation pdb
doit exécuter la ligne suivante (Je suppose ipdb
est juste pdb
adapté pour travailler sur IPython, d'autant plus que je ne peux pas trouver toute la documentation de commande qui se réfère spécifiquement à ipdb
et non pdb
)
s
a aussi le même problème. C'est en fait ce que je veux faire - entrer dans l'appel plot
(d'après ce que je comprends, c'est ce que s
est censé faire), mais ce que je reçois est exactement le même que ce que je reçois de n
. J'ai aussi essayé r
et j'ai le même problème. Chaque exemple que j'ai vu utilise juste Tracer()()
ou IPython.core.debugger.PDB().set_trace()
pour définir un point d'arrêt dans la ligne qui suit la commande, mais les deux provoquent les mêmes problèmes (et, je suppose, sont en fait exactement la même chose).
J'ai aussi essayé %debug
(MultipleInstanceError
) et %%debug
(ne montre pas le code dans la ligne en cours d'exécution - dit juste ce que la ligne, à l'aide s
ne marchez pas dans la fonction, exécute uniquement la ligne). Edit: se révèle, selon un blog d'avril de cette année, plaine pdb
devrait également fonctionner. Il ne me permet de déboguer de manière interactive l'ordinateur portable, mais il imprime uniquement la ligne courante débogué (probablement pas un bug), et il a le même problème que IPython de set_trace()
et Tracer()()
sur la console IPython
plaine, IPython de set_trace
(seulement celui que j'ai testé) fonctionne très bien.