7

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?

Community
  • 1
  • 1
Phani
  • 3,267
  • 4
  • 25
  • 50

3 Answers3

5

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.

michelesr
  • 168
  • 2
  • 8
1

If you are wiling to use another debugger, trepan has does save history across sessions.

rocky
  • 7,226
  • 3
  • 33
  • 74
1
  • 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

akuhn
  • 27,477
  • 2
  • 76
  • 91