def pm(etype, value, tb): # pragma no cover import pdb, traceback try: from IPython.ipapi import make_session; make_session() from IPython.Debugger import Pdb sys.stderr.write('Entering post-mortem IPDB shell\n') p = Pdb(color_scheme='Linux') p.reset() p.setup(None, tb) p.print_stack_trace() sys.stderr.write('%s: %s\n' % ( etype, value)) p.cmdloop() p.forget() # p.interaction(None, tb) except ImportError: sys.stderr.write('Entering post-mortem PDB shell\n') traceback.print_exception(etype, value, tb) pdb.post_mortem(tb)
def start_legacy_api(self): self.started = True # No c is available: we can't get @string ipython_argv setting. old_argv = sys.argv sys.argv = ['leo.py', '-p', 'sh'] session = ipapi.make_session() self.ip = session.IP.getapi() self.init_ipython() sys.argv = old_argv # Does not return until IPython closes. # IPython runs the leo mainloop session.mainloop()