2012-04-27 18 views
6

C'è un modo per salvare la cronologia dei comandi pdb (python debugger) tra le sessioni? Inoltre, posso specificare la lunghezza della cronologia?Salva la cronologia dei comandi in pdb

Questo è simile alla domanda How can I make gdb save the command history?, tuttavia per pdb anziché gdb.

grazie -Molti

+0

Quale piattaforma si usa? – Keith

+0

Ubuntu 11.04 Python 2.7.1+ (r271: 86832, 11 aprile 2011, 18:13:53) [GCC 4.5.2] su linux2 – vkontori

+0

Hai risolto questo problema? Mi piacerebbe avere anche una funzionalità simile. – Phani

risposta

-1

Penso che si possa fare questo con IPython: sostituzione

http://ipython.org/ipython-doc/stable/interactive/tutorial.html#history

IPDB per pdb:

http://pypi.python.org/pypi/ipdb

+1

Sei sicuro che questo può essere fatto con ipdb? Non ero in grado di ottenere la mia cronologia dalle mie vecchie sessioni ipdb. – Phani

+1

Questo non è corretto, ipdb non supporta la cronologia. –

+0

IPDB non supporta gli stessi comandi magici di IPython. A meno che tu non possa mostrarmi un modo per inserire '% magic-commands' in IPDB, il downvote rimane. –

5

NB: Questo è stato testato soltanto con Python 2.

Crediti: https://wiki.python.org/moin/PdbRcIdea

PPB usa readline in modo che possiamo indicare readline per salvare la storia:

.pdbrc

# NB: This file only works with single-line statements 
import os 
execfile(os.path.expanduser("~/.pdbrc.py")) 

.pdbrc.py

def _pdbrc_init(): 
    # Save history across sessions 
    import readline 
    histfile = ".pdb-pyhist" 
    try: 
     readline.read_history_file(histfile) 
    except IOError: 
     pass 
    import atexit 
    atexit.register(readline.write_history_file, histfile) 
    readline.set_history_length(500) 

_pdbrc_init() 
del _pdbrc_init 
2

Vedere this post. È possibile salvare la cronologia in pdb. Per impostazione predefinita, pdb non legge più righe. Quindi tutte le funzioni devono essere su una singola riga.

in ~/.pdbrc:

import atexit 
import os 
import readline 

historyPath = os.path.expanduser("~/.pyhistory") 

def save_history(historyPath=historyPath): import readline; readline.write_history_file(historyPath) 

if os.path.exists(historyPath): readline.read_history_file(historyPath) 

atexit.register(save_history, historyPath=historyPath) 
Problemi correlati