Skip to article frontmatterSkip to article content

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

clavierquoi
l (lowercase L)list source
wshow stack
nnext statement (stay in same function)
sstep into (dive into function call)
ccontinue
pprint
# 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)

pdb.run()

import pdb 
import mymodule 
pdb.run('mymodule.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()

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)