2012-04-27 12 views
6

¿Hay alguna forma de guardar el historial de comandos de pdb (debugger de python) en todas las sesiones? Además, ¿puedo especificar la longitud del historial?Guardar el historial de comandos en pdb

Esto es similar a la pregunta How can I make gdb save the command history?, sin embargo, para pdb en lugar de gdb.

gracias -Muchos

+0

Qué plataforma utiliza? – Keith

+0

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

+0

¿Resolvió este problema? Me gustaría tener una característica similar también. – Phani

Respuesta

-1

Creo que se puede hacer esto con IPython: reemplazo

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

IPDB para pdb:

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

+1

¿Estás seguro de que esto se puede hacer con ipdb? No pude obtener mi historial de mis viejas sesiones de ipdb. – Phani

+1

Esto es incorrecto, ipdb no admite el historial. –

+0

IPDB no admite los mismos comandos mágicos que IPython. A menos que me muestres una forma de ingresar '% magic-commands' en IPDB, el downvote permanece. –

5

Nota: Esto sólo se prueba con el pitón 2.

Créditos: https://wiki.python.org/moin/PdbRcIdea

AP usa readline para que podamos instruir a readline para salvar la historia:

.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

Ver this publicar. Es posible guardar el historial en pdb. Por defecto, pdb no lee múltiples líneas. Entonces, todas las funciones deben estar en una sola línea.

En ~/.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) 
Cuestiones relacionadas