2012-04-27 16 views
6

Czy istnieje sposób na zapisanie historii poleceń pdb (python debugger) w sesjach? Czy mogę też określić długość historii? To jest podobne do pytania How can I make gdb save the command history?, jednak dla pdb zamiast gdb.Zapisz historię komend w pdb

-Wiele dzięki

+0

Która platforma używacie? – Keith

+0

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

+0

Czy rozwiązałeś ten problem? Chciałbym również mieć podobną funkcję. – Phani

Odpowiedz

-1
+1

Czy na pewno można to zrobić za pomocą ipdb? Nie byłem w stanie uzyskać mojej historii z moich starych sesji ipdb. – Phani

+1

To jest nieprawidłowe, ipdb nie obsługuje historii. –

+0

IPDB nie obsługuje tych samych poleceń magicznych, co IPython. Jeśli nie możesz pokazać mi sposobu na wprowadzenie '% magic-commands' w IPDB, pozostaje downvote. –

5

NB: Ta jest testowany tylko z pytona 2.

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

PDB używa readline więc możemy polecić readline uratować 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

Zobacz this post. Możliwe jest zapisanie historii w pdb. Domyślnie pdb nie czyta wielu linii. Zatem wszystkie funkcje muszą znajdować się w jednej linii.

W ~/.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)