This question has been asked before, but I couldn't find a good answer. So, I am trying to ask again.
I would like my ipdb to remember commands across sessions. Right now, it can pull up commands executed in Ipython sessions but not from old ipdb sessions. It would be a huge time saver, if I could have this feature.
Does anyone have a solution to this problem?
I had your same problem, so I forked the project and add a patch for persistent history. You can install the forked version of ipdb with pip:
pip install git+https://github.com/michelesr/ipdb.git
Just make sure that your IPython version is 5.0 or higher. Implementation info can be found in this article.
If you are wiling to use another debugger, trepan has does save history across sessions.
- Create a file with the following content
- Import that file with
execfile(...)
in your ~/.pdbrc
file
def use_file_history():
import os
from IPython.terminal.debugger import TerminalPdb
from prompt_toolkit.history import FileHistory
cmdloop = TerminalPdb.cmdloop
def cmdloop_prime(self, intro=None):
fname = os.path.join(os.path.expanduser('~'), '.ipdb_history')
self._pt_app.buffer.history = FileHistory(fname)
self._pt_app.buffer.reset()
cmdloop(self, intro)
TerminalPdb.cmdloop = cmdloop_prime
use_file_history()
del use_file_history
PS—you can find this code, and more patches, in this gist with ipdb patches