2016-04-29 12 views
7

con Python 3.5.1nel PPB Python debugger, come si fa a uscire dalla modalità interattiva senza terminare la sessione di debug

Quando eseguo uno script utilizzando il modulo python debugger:

[home]# python -m pdb myscript.py 

Verrà avviata una sessione di debug:

> /somepath/to/myscript.py(1)<module>() 
    -> import os 
    (Pdb) 

Se voglio inserire un terminale interattivo all'interno della sessione di debug che può immettere il comando interact:

(Pdb) interact 
*interactive* 
>>> 

Ora posso interagire con il codice esimo come se fossi in una modalità interattiva in esecuzione pitone, con l'accesso a tutte le funzioni o variabili nel campo di applicazione della script in esecuzione nel debugger al momento sono entrato in modalità interact.

Quando eseguire il comando per uscire dalla modalità interattiva (per continuare il debug) uccide l'intera sessione di debug:

>>> exit() 
The program exited via sys.exit(). Exit status: None 
....long nasty stack trace here.... 

[home]# 

Ho anche provato quit() e termina anche il debugger.

Come si può uscire dalla modalità interact senza terminare l'intera sessione di debug? È possibile?

Idealmente, mi piacerebbe tornare in modalità di debug nel punto in cui ho interrotto in modo da poter continuare a scorrere il mio codice.

risposta

10

L'invio di un EOF premendo Ctrl + D dovrebbe funzionare:

$ python -m pdb myscript.py 
> .../myscript.py(1)<module>() 
-> import os 
(Pdb) import code 
(Pdb) code.interact() 
Python 2.7.11 (default, Dec 27 2015, 01:48:39) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> <CTRL-D> 
(Pdb) c 
... 
+3

Bonus: 'CTRL-D' è anche incredibilmente a portata di mano per la chiusura di decine di sessioni di terminale/SSH aperti alla fine di una lunga giornata di lavoro: sarà (di solito) Chiudi immediatamente la scheda nel tuo emulatore di terminale, ** eccetto ** se c'è ancora un comando semipipizzato sulla riga di comando o un programma in esecuzione in primo piano. –

0

Se si utilizza ipdb, e sono in Windows/Windows10, è necessario utilizzare Cntrl-Z>Return per uscire dalla shell interattiva .

testato in punta ipython/python 3.5 e ipdb e pdb

Problemi correlati