luaforwindows/SciTE/scite-debug/xpdb.py

43 lines
1.4 KiB
Python
Executable File

# A modified main pdb debugger loop (see pdb.py in the Python library!)
from pdb import *
import sys,os,traceback
def main():
mainpyfile = sys.argv[1] # Get script filename
if not os.path.exists(mainpyfile):
print 'Error:', mainpyfile, 'does not exist'
sys.exit(1)
del sys.argv[0] # Hide "pdb.py" from argument list
# Replace pdb's dir with script's dir in front of module search path.
sys.path[0] = os.path.dirname(mainpyfile)
pdb = Pdb()
# 1st customization: prompt w/ a line feed!
pdb.prompt = '(PDB)\n'
# 2nd customization: not an infinite loop!
try:
pdb._runscript(mainpyfile)
if pdb._user_requested_quit:
return
print "The program finished and will not be restarted"
except SystemExit:
# In most cases SystemExit does not warrant a post-mortem session.
print "The program exited via sys.exit(). Exit status: ",
print sys.exc_info()[1]
except:
traceback.print_exc()
print "Uncaught exception. Entering post mortem debugging"
t = sys.exc_info()[2]
while t.tb_next is not None:
t = t.tb_next
pdb.interaction(t.tb_frame,t)
# When invoked as main program, invoke the debugger on a script
if __name__=='__main__':
main()
# under Windows, we need to run Python w/ the -i flag; this ensures that we die!
sys.exit(0)