2017-03-16 1 views
1

Mon programme se termine de façon inattendue. Quand je le lance à travers pdb, il se termine par:Cathy sys.exit() dans le débogueur

The program exited via sys.exit(). Exit status:                   

mais il n'y a aucune trace de la pile à l'instance, il est sorti. Je n'ai aucune idée de pourquoi cela arrive. En deçà de step et de next à travers tout, y a-t-il un moyen d'indiquer à pdb d'entrer dans le débogueur lorsque cela est tenté, au lieu d'honorer le sys.exit()?

Répondre

1

Une solution simple ish serait de singe-patch sys.exit() avant de lancer:

$ python -m pdb my_script.py 

(Pdb) def no_exit(code): raise RuntimeError('halt') 
(Pdb) import sys 
(Pdb) sys.exit = no_exit 
(Pdb) cont 
+0

Je l'ai essayé mais je suis toujours obtenir le même .. Il semble pdb me ment? Ou peut-être rapporte-t-il encore que le programme est sorti via sys.exit(). Statut de sortie: 'même si le code-c termine le processus sans passer par' sys.exit() '? – gerrit