le debugger Python : pdb¶
breakpoint()¶
pour mettre un point d’arrêt dans un programme on peut utiliser breakpoint()
def fact(n):
if n<=1:
breakpoint()
return 1
else:
return n * fact(n-1)raccourcis
| clavier | quoi |
|---|---|
| l (lowercase L) | list source |
| w | show stack |
| n | next statement (stay in same function) |
| s | step into (dive into function call) |
| c | continue |
| p |
# si on exécute, le programme s'arrête
# et on peut ensuite exécuter pas à pas,
# inspecter la pile et les variables, ...
# fact(3)The history saving thread hit an unexpected error (OperationalError('disk I/O error')).History will not be written to the database.
pdb.run()¶
le module pdb permet de debugger facilement un programme Python
import pdb
import mymodule
pdb.run('mymodule.test()') lance le debugger depuis la console sur la fonction
test()
pdb.pm() - post-mortem¶
import pdb
import mymodule
mymodule.test()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "./mymodule.py", line 4, in test
test2()
…
pdb.pm()lance le debugger en post-mortem
sous IPython¶
dans ipython (ou dans un notebook), vous pouvez utiliser la magic %%debug
def fact(n):
print(f"in fact with {n=}")
if n <= 1:
return 1
else:
return n * fact(n-1)pour essayer, enlever les commentaires dans cette cellule
# %%debug
# fact(3)