J'utilise le module pdb pour déboguer un programme. J'aimerais comprendre comment je peux sortir de pdb et permettre au programme de continuer jusqu'à son terme. Le programme est coûteux en termes d’exécution, aussi je ne veux pas quitter sans que le script tente de s’achever. continue
ne semble pas fonctionner. Comment puis-je quitter pdb et continuer mon programme?
continue
devrait "Continuer l'exécution, ne s'arrêter que lorsqu'un point d'arrêt est rencontré", afin que vous ayez un point d'arrêt défini quelque part. Pour supprimer le point d'arrêt (si vous l'avez inséré manuellement):
(Pdb) break
Num Type Disp Enb Where
1 breakpoint keep yes at /path/to/test.py:5
(Pdb) clear 1
Deleted breakpoint 1
(Pdb) continue
Ou, si vous utilisez pdb.set_trace()
, vous pouvez essayer ceci (bien que si vous utilisez pdb de manière plus sophistiquée, cela peut casser des choses ...)
(Pdb) pdb.set_trace = lambda: None # This replaces the set_trace() function!
(Pdb) continue
# No more breaks!
Un simple Ctrl-D va sortir de pdb. Si vous voulez continuer plutôt que de casser, appuyez simplement sur c plutôt que la totalité de la commande continue
Le réponse de @voithos est correct, je vais donc ajouter une alternative dans le cas où vous utilisez set_trace
. Oui le pdb.set_trace = lambda: None
hack fonctionne correctement, mais pas si vous avez défini d’autres points d’arrêt et souhaitez les réactiver ultérieurement. Pour moi, cela indique le fait qu'il manque malheureusement à pdb
de nombreuses fonctionnalités (même des éléments de base, comme des listes d'affichage), ce qui est un autre cas.
La bonne nouvelle est que pdb++
est un excellent remplaçant pour pdb
, et une des choses qu’il résout est le problème de la désactivation de set_trace
. Donc vous pouvez simplement faire:
pip install pdbpp
puis au (Pdb++)
Invite, tapez:
pdb.disable()
Si vous souhaitez réactiver ultérieurement, cela fonctionne sans surprise:
pdb.enable()
Facile! Et vous obtiendrez beaucoup d'autres choses utiles en plus de cela.
Si vous souhaitez vraiment quitter le débogueur, vous devez exécuter une opération telle que WinPdb , qui vous permet de vous déconnecter du processus, puis de quitter le débogueur, (N.B. il est multi-plateforme).
Si vous souhaitez continuer le débogage mais ne vous arrêtez plus à un point d'arrêt donné, vous devez:
cl bp_number
ouclear file:line
pour supprimer définitivement le point d'arrêt ou disable pb_number
pour le désactiver mais pouvoir le faire revenir en arrière.continue
et votre programme s'exécutent jusqu'au prochain différent le point d'arrêt est atteint.Pour plus de détails sur ce qui précède, voir le manuel .