#extends phd_site #implements respond #attr $Title = "pdbrc.py" #attr $Copyright = 2003 #attr $First = "init.py.html" #attr $Prev = "pdbrc.html" #attr $Last = "pdbrc.py.html" #attr $alternates = (("Plain text version", "text/plain", "pdbrc.py.txt"),) #def body_html #raw
# This is startup file for interactive python debugger. # # Text version here # # Generated by gvim :runtime syntax/2html.vim #
# This is startup file for interactive python debugger pdb. # Use it like this in ~/.pdbrc: # import os # x = execfile("pdbrc.py") # See http://wiki.python.org/moin/PdbRcIdea def init(): import atexit import os import sys import readline # Command line history: histfile = os.path.expanduser("~/.pdb_history") try: readline.read_history_file(histfile) except IOError: pass def savehist(histfile=histfile): import os import readline histfilesize = os.environ.get('HISTFILESIZE') \ or os.environ.get('HISTSIZE') if histfilesize: try: histfilesize = int(histfilesize) except ValueError: pass else: readline.set_history_length(histfilesize) readline.write_history_file(histfile) atexit.register(savehist) def info(type, value, tb): # return to debugger after fatal exception (Python cookbook 14.5): import pdb import sys import traceback if hasattr(sys, 'ps1') or not sys.stderr.isatty(): sys.__excepthook__(type, value, tb) traceback.print_exception(type, value, tb) print pdb.pm() sys.excepthook = info init() # https://github.com/giampaolo/sysconf/blob/master/home/.pdbrc.py import pdb import rlcompleter #pdb.Pdb.complete = rlcompleter.Completer(locals()).complete # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/498182 def complete(self, text, state, rlcompleter=rlcompleter): """return the next possible completion for text, using the current frame's local namespace This is called successively with state == 0, 1, 2, ... until it returns None. The completion should begin with 'text'. """ # keep a completer class, and make sure that it uses the current local scope if not hasattr(self, 'completer'): self.completer = rlcompleter.Completer(self.curframe.f_locals) else: self.completer.namespace = self.curframe.f_locals return self.completer.complete(text, state) # Cleanup any variables that could otherwise clutter up the namespace. del pdb, rlcompleter#end raw #end def $phd_site.respond(self)