[Python-checkins] python/dist/src/Lib pdb.py,1.62,1.63

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
2003年4月09日 12:06:26 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1:/tmp/cvs-serv20970/Lib
Modified Files:
	pdb.py 
Log Message:
- New function sys.call_tracing() allows pdb to debug code
 recursively.
- pdb has a new command, "debug", which lets you step through
 arbitrary code from the debugger's (pdb) prompt.
Index: pdb.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/pdb.py,v
retrieving revision 1.62
retrieving revision 1.63
diff -C2 -d -r1.62 -r1.63
*** pdb.py	27 Feb 2003 20:14:37 -0000	1.62
--- pdb.py	9 Apr 2003 19:06:21 -0000	1.63
***************
*** 524,527 ****
--- 524,554 ----
 do_j = do_jump
 
+ def do_debug(self, arg):
+ sys.settrace(None)
+ globals = self.curframe.f_globals
+ locals = self.curframe.f_locals
+ 	p = Pdb()
+ 	p.prompt = "(%s) " % self.prompt.strip()
+ 	print "ENTERING RECURSIVE DEBUGGER"
+ 	sys.call_tracing(p.run, (arg, globals, locals))
+ 	print "LEAVING RECURSIVE DEBUGGER"
+ sys.settrace(self.trace_dispatch)
+ self.lastcmd = p.lastcmd
+ 
+ def dont_debug(self, arg):
+ locals = self.curframe.f_locals
+ globals = self.curframe.f_globals
+ try:
+ r = sys.call_tracing(eval, (arg, globals, locals))
+ 	 print "--- DEBUG RETURNED ---"
+ 	 if r is not None:
+ 	 print repr(r)
+ except:
+ t, v = sys.exc_info()[:2]
+ if type(t) == type(''):
+ exc_type_name = t
+ else: exc_type_name = t.__name__
+ print '***', exc_type_name + ':', v
+ 
 def do_quit(self, arg):
 self.set_quit()
***************
*** 834,837 ****
--- 861,870 ----
 print """j(ump) lineno
 Set the next line that will be executed."""
+ 
+ def help_debug(self):
+ print """debug code
+ Enter a recursive debugger that steps through the code argument
+ (which is an arbitrary expression or statement to be executed
+ in the current environment)."""
 
 def help_list(self):

AltStyle によって変換されたページ (->オリジナル) /