Lors du débogage de scripts en Python (2.7, tournant sous Linux), j'injecte occasionnellement pdb.set_trace() (notez que j'utilise en fait ipdb), par exemple :
import ipdb as pdb
try:
do_something()
# Je voudrais examiner certaines variables locales avant d'exécuter do_something_dangerous()
pdb.set_trace()
except:
pass
do_something_dangerous()
Je lance généralement mon script depuis le shell, par exemple
python my_script.py
Parfois, lors de ma session de débogage, je réalise que je ne veux pas exécuter do_something_dangerous(). Quel est le moyen le plus simple d'arrêter l'exécution du programme afin que do_something_dangerous() ne soit pas exécuté et que je puisse quitter pour revenir au shell ?
D'après ce que je comprends, en appuyant sur ctrl-d (ou en émettant la commande de sortie du débogueur) va tout simplement quitter ipdb et le programme continuera de s'exécuter (dans mon exemple ci-dessus). Appuyer sur ctrl-c semble déclencher un KeyboardInterrupt mais je n'ai jamais compris le contexte dans lequel il était déclenché.
J'espère trouver quelque chose comme ctrl-q pour simplement arrêter tout le processus, mais je n'ai rien trouvé.
Je sais que mon exemple est très artificiel, mais ma question porte sur la façon d'interrompre l'exécution à partir de pdb lorsque le code en cours de débogage est configuré pour attraper des exceptions. Il ne s'agit pas de restructurer le code ci-dessus pour qu'il fonctionne !