diff options
author | Guido van Rossum <guido@python.org> | 1997-07-11 13:43:53 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1997-07-11 13:43:53 (GMT) |
commit | 9e1ee9715e642b950f1506294e2f91562816c1fc (patch) | |
tree | 30e5d5b1aec418fd3be637e8ad78c6973a8a29e0 /Lib | |
parent | 668361766a3f20a677d3425bcd3c4252080696a5 (diff) | |
download | cpython-9e1ee9715e642b950f1506294e2f91562816c1fc.zip cpython-9e1ee9715e642b950f1506294e2f91562816c1fc.tar.gz cpython-9e1ee9715e642b950f1506294e2f91562816c1fc.tar.bz2 |
Support for conditional breakpoints (Jim Fulton, with some changes).
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/pdb.py | 29 |
1 files changed, 22 insertions, 7 deletions
@@ -96,27 +96,39 @@ class Pdb(bdb.Bdb, cmd.Cmd): print self.get_all_breaks() # XXX return # Try line number as argument + try: + arg = eval(arg, self.curframe.f_globals, + self.curframe.f_locals) + except: + print '*** Could not eval argument:', arg + return + + # Check for condition + try: arg, cond = arg + except: arg, cond = arg, None + try: - lineno = int(eval(arg)) + lineno = int(arg) filename = self.curframe.f_code.co_filename except: # Try function name as the argument import codehack try: - func = eval(arg, self.curframe.f_globals, - self.curframe.f_locals) + func = arg if hasattr(func, 'im_func'): func = func.im_func code = func.func_code except: - print '*** Could not eval argument:', arg + print '*** The specified object', + print 'is not a function', arg return lineno = codehack.getlineno(code) filename = code.co_filename # now set the break point - err = self.set_break(filename, lineno) + err = self.set_break(filename, lineno, cond) if err: print '***', err + do_b = do_break def do_clear(self, arg): @@ -352,10 +364,13 @@ class Pdb(bdb.Bdb, cmd.Cmd): self.help_b() def help_b(self): - print """b(reak) [lineno | function] + print """b(reak) [lineno | function] [, "condition"] With a line number argument, set a break there in the current file. With a function name, set a break at the entry of that - function. Without argument, list all breaks.""" + function. Without argument, list all breaks. If a second + argument is present, it is a string specifying an expression + which must evaluate to true before the breakpoint is honored. + """ def help_clear(self): self.help_cl() |