Vous pouvez utiliser ʻimport pdb`, mais ici nous allons vous montrer comment déboguer sans apporter de modifications au code source. Seules les commandes fréquemment utilisées seront couvertes.
$ python -m pdb XXXXX.py
Ou
$ python3 -m pdb XXXXX.py
hello.py
msg = "Hello world"
def hello(txt):
print(txt)
hello(msg)
print("Done.")
$ python3 -m pdb hello.py
> /path/to/current/directory/hello.py(1)<module>()
-> msg = "Hello world"
(Pdb)
Vous pouvez poursuivre le travail de débogage en entrant une commande après (Pdb)
.
--Commandes fréquemment utilisées
commander | une fonction |
---|---|
b(reak) [Nombre de lignes ou nom de fonction] | Mettre un point d'arrêt sur une ligne ou une fonction |
c(ont(inue)) | Exécuter jusqu'à ce que le prochain point d'arrêt soit atteint |
s(tep) | Exécuter la ligne actuelle(Arrêter à un appel de fonction) |
n(ext) | Exécuter la ligne actuelle(S'il s'agit d'un appel de fonction, exécutez la fonction) |
q(uit) | Quittez le débogueur |
Vous pouvez omettre les caractères entre parenthèses dans la commande.
$ python3 -m pdb hello.py
> /path/to/current/directory/hello.py(1)<module>()
-> msg = "Hello world"
(Pdb) b 6
Breakpoint 1 at /path/to/current/directory/hello.py:6
(Pdb) c
> /path/to/current/directory/hello.py(6)<module>()
-> hello(msg)
(Pdb) s
--Call--
> /path/to/current/directory/hello.py(3)hello()
-> def hello(txt):
(Pdb) s
> /path/to/current/directory/hello.py(4)hello()
-> print(txt)
(Pdb) n
Hello world
--Return--
> /path/to/current/directory/hello.py(4)hello()->None
-> print(txt)
(Pdb) c
Done.
The program finished and will be restarted
> /path/to/current/directory/hello.py(1)<module>()
-> msg = "Hello world"
(Pdb) q
$
http://docs.python.jp/3/library/pdb.html
Recommended Posts