2012-04-27 12 views
6

Gibt es eine Möglichkeit, pdb (python debugger) Befehlsverlauf über Sitzungen zu speichern? Kann ich auch die Verlaufslänge angeben?Befehlsverlauf in pdb speichern

Dies ist ähnlich der Frage How can I make gdb save the command history?, jedoch für pdb anstelle von gdb.

-Viele dank

+0

Welche Plattform benutzen Sie? – Keith

+0

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

+0

Haben Sie dieses Problem gelöst? Ich hätte gerne eine ähnliche Funktion. – Phani

Antwort

-1

Ich glaube, Sie dies mit IPython tun können:

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

IPDB Ersatz für pdb:

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

+1

Sind Sie sicher, dass dies mit ipdb getan werden kann? Ich konnte meine Geschichte nicht von meinen alten ipdb-Sitzungen abrufen. – Phani

+1

Das ist falsch, ipdb unterstützt keine Geschichte. –

+0

IPDB unterstützt nicht dieselben magischen Befehle wie IPython. Es sei denn, Sie können mir einen Weg zeigen,%% magic-commands 'in IPDB einzugeben, der Downvote bleibt erhalten. –

5

NB:

.pdbrc

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

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

PDB verwendet Readline- so können wir Readline- Geschichte speichern anweisen: Dies ist nur mit Python 2.

Credits getestet .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

Siehe this Post. Es ist möglich, den Verlauf in pdb zu speichern. Standardmäßig liest pdb nicht mehrere Zeilen. Alle Funktionen müssen also in einer einzigen Zeile stehen.

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)