History across ipdb sessions

2020-07-10 10:33发布

问题:

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?

回答1:

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.



回答2:

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



回答3:

  • 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