Entrer dans une fonction dans IPython
Est-il un moyen de faire un pas dans la première ligne d'une fonction dans ipython. J'imagine quelque chose qui ressemblerait à:
%step foo(1, 2)
qui s'exécute ipdb
et définit un point d'arrêt sur la première ligne de foo
.
Si je veux le faire maintenant, je dois aller à la fonction de code source et d'ajouter un import ipdb; ipdb.set_trace()
ligne.
- Il n'y a pas de fonction comme
%step
. Vous pouvez%run -d
un script en entier, mais vous ne pouvez pas faire la même chose pour un seul état ou dans l'appel de fonction. Vous pouvez manuellementpdb.run("foo(1, 2)")
oupdb.runcall(foo, 1, 2)
. - Je me demandais la même chose aujourd'hui. Je voudrais utiliser ce tout le temps si elle était disponible. Le temps de creuser dans le iPython source pour voir comment il pourrait être mis en œuvre.
- Double Possible de Est-il possible d'exécuter des commandes dans IPython avec le débogage?
Vous devez vous connecter pour publier un commentaire.
ipdb a bénéficié du soutien pour runcall, runeval et l'exécuter depuis la 0.7, plus tôt cette année. Vous pouvez l'utiliser comme
pdb.runcall
:from IPython.core.debugger import Pdb; ipdb=Pdb()
.SciPy
utilisateurs...La IPython magie vous demande est maintenant mis en œuvre avec les versions plus récentes:
https://stackoverflow.com/a/46333421/4374441
Vous avez juste à taper
%debug foo(1, 2)
puiss
à l'étape dans la fonction.