bpdb - fix bpgroup static=1 behavior for when bpdb is disabled

This commit is contained in:
Ken Patel 2010-04-28 21:16:25 +00:00
parent c489fbeefc
commit ff599cf9ab

View File

@ -4370,15 +4370,15 @@ class BpDb:
return bpdb.enabled return bpdb.enabled
@staticmethod @staticmethod
def bp(id=None, grp=None, cfg=None, iff=True, frameCount=1): def bp(id=None, grp=None, cfg=None, iff=True, test=None, frameCount=1):
if not bpdb.enabled or not bpdb.verifyEnabled(): if not bpdb.enabled or not bpdb.verifyEnabled():
return return
bpi = bp(id=id, grp=grp, cfg=cfg, iff=iff,frameCount=frameCount+1) bpi = bp(id=id, grp=grp, cfg=cfg, iff=iff, frameCount=frameCount+1)
bpi.maybeBreak(frameCount=frameCount+1) bpi.maybeBreak(test=test, frameCount=frameCount+1)
@staticmethod @staticmethod
def bpCall(id=None,grp=None,cfg=None,iff=True,frameCount=1,onEnter=1,onExit=0): def bpCall(id=None,grp=None,cfg=None,iff=True,test=None,frameCount=1,onEnter=1,onExit=0):
def decorator(f): def decorator(f):
return f return f
@ -4394,10 +4394,10 @@ class BpDb:
#create our bp object #create our bp object
dbp = bp(id=id or f.__name__, grp=bpi.grp, cfg=bpi.cfg, iff=iff, frameCount=frameCount+1) dbp = bp(id=id or f.__name__, grp=bpi.grp, cfg=bpi.cfg, iff=iff, frameCount=frameCount+1)
if onEnter: if onEnter:
dbp.maybeBreak(iff=iff,frameCount=frameCount+1,displayPrefix='Calling ') dbp.maybeBreak(iff=iff,test=test,frameCount=frameCount+1,displayPrefix='Calling ')
f_result = f(*args, **kwds) f_result = f(*args, **kwds)
if onExit: if onExit:
dbp.maybeBreak(iff=iff,frameCount=frameCount+1,displayPrefix='Exited ') dbp.maybeBreak(iff=iff,test=test,frameCount=frameCount+1,displayPrefix='Exited ')
return f_result return f_result
wrap.func_name = f.func_name wrap.func_name = f.func_name
@ -4410,18 +4410,17 @@ class BpDb:
@staticmethod @staticmethod
def bpGroup(*args, **kArgs): def bpGroup(*args, **kArgs):
if not bpdb.enabled or not bpdb.verifyEnabled():
def functor(*cArgs, **ckArgs):
return
return functor
argsCopy = args[:]
def functor(*cArgs, **ckArgs): def functor(*cArgs, **ckArgs):
kwArgs = kArgs return
kwArgs.update(ckArgs)
kwArgs.pop('static', None) if bpdb.enabled and bpdb.verifyEnabled():
kwArgs['frameCount'] = ckArgs.get('frameCount',1)+1 argsCopy = args[:]
return bpdb.bp(*(cArgs), **kwArgs) def functor(*cArgs, **ckArgs):
kwArgs = kArgs
kwArgs.update(ckArgs)
kwArgs.pop('static', None)
kwArgs['frameCount'] = ckArgs.get('frameCount',1)+1
return bpdb.bp(*(cArgs), **kwArgs)
if kArgs.get('static'): if kArgs.get('static'):
return staticmethod(functor) return staticmethod(functor)
@ -4614,16 +4613,22 @@ class bp:
bpdb.grpInfos[grp][id] = {} bpdb.grpInfos[grp][id] = {}
print '%s has been reset.'%(self.prettyName(id,grp,q=1),) print '%s has been reset.'%(self.prettyName(id,grp,q=1),)
def maybeBreak(self, iff=True, frameCount=1,displayPrefix=''): def maybeBreak(self, iff=True, test=None, frameCount=1, displayPrefix=''):
if self.shouldBreak(iff): if self.shouldBreak(iff=iff, test=test):
self.doBreak(frameCount=frameCount+1,displayPrefix=displayPrefix) self.doBreak(frameCount=frameCount+1,displayPrefix=displayPrefix)
def shouldBreak(self,iff=True): def shouldBreak(self,iff=True, test=None):
#check easy early out #check easy early out
if self.disabled: if self.disabled:
return False return False
if not self.iff or not iff: if not self.iff or not iff:
return False return False
if test:
if not isinstance(test, (list, tuple)):
test = (test,)
for atest in test:
if not atest():
return False
#make sure we exist #make sure we exist
self.makeIdGrp(self.id,self.grp) self.makeIdGrp(self.id,self.grp)