Two changes suggested by Andrew Kuchling:

- move compile() inside try-except
- add code so you can do "python pdb.py <script> <arg> ..." to debug <script>
This commit is contained in:
Guido van Rossum 1996-07-30 16:28:13 +00:00
parent 81749b0754
commit f17361d314
1 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,5 @@
#! /usr/local/bin/python
# pdb.py -- finally, a Python debugger! # pdb.py -- finally, a Python debugger!
# (See pdb.doc for documentation.) # (See pdb.doc for documentation.)
@ -74,8 +76,8 @@ class Pdb(bdb.Bdb, cmd.Cmd):
locals = self.curframe.f_locals locals = self.curframe.f_locals
globals = self.curframe.f_globals globals = self.curframe.f_globals
globals['__privileged__'] = 1 globals['__privileged__'] = 1
code = compile(line + '\n', '<stdin>', 'single')
try: try:
code = compile(line + '\n', '<stdin>', 'single')
exec code in globals, locals exec code in globals, locals
except: except:
if type(sys.exc_type) == type(''): if type(sys.exc_type) == type(''):
@ -490,3 +492,17 @@ def help():
else: else:
print 'Sorry, can\'t find the help file "pdb.doc"', print 'Sorry, can\'t find the help file "pdb.doc"',
print 'along the Python search path' print 'along the Python search path'
# When invoked as main program, invoke the debugger on a script
if __name__=='__main__':
import sys
if not sys.argv[1:]:
print "usage: pdb.py scriptfile [arg] ..."
sys.exit(2)
# Get the module name and function name, if present
filename = sys.argv[1]
del sys.argv[0]
run('execfile(' + `filename` + ')', {'__name__': '__main__'})