Prevent debugger from stepping into Idle rpc code

This commit is contained in:
Chui Tey 2002-12-12 20:53:19 +00:00
parent de3337913f
commit 067d734f9e
1 changed files with 17 additions and 5 deletions

View File

@ -13,13 +13,23 @@ def __init__(self, gui):
bdb.Bdb.__init__(self)
def user_line(self, frame):
# get the currently executing function
##print>>sys.__stderr__, "*function: ", frame.f_code.co_name
##print>>sys.__stderr__, "*file: ", frame.f_code.co_filename
##print>>sys.__stderr__, "*line number: ", frame.f_code.co_firstlineno
co_filename = frame.f_code.co_filename
co_name = frame.f_code.co_name
## print>>sys.__stderr__, "*function: ", frame.f_code.co_name
## print>>sys.__stderr__, "*file: ", frame.f_code.co_filename
## print>>sys.__stderr__, "*line number: ", frame.f_code.co_firstlineno
## print>>sys.__stderr__, "*name: ", co_name
## print>>sys.__stderr__, "*function: ", frame.f_locals.get(co_name,None)
try:
# XXX 12 Dec 2002 CGT TO DO: Find way to get a reference to the
# XXX currently running function. If the function has an
# attribute called "DebuggerStepThrough", prevent the debugger
# from stepping through Idle code. The following doesn't work
# in instance methods. Hard coded some workarounds.
func = frame.f_locals[co_name]
if getattr(func, "DebuggerStepThrough", 0):
print "XXXX DEBUGGER STEPPING THROUGH"
@ -27,7 +37,9 @@ def user_line(self, frame):
return
except:
pass
if co_filename in ('rpc.py', '<string>'):
# workaround for the problem above
if co_filename in (r'.\rpc.py', 'rpc.py','<string>'):
self.set_step()
return
if co_filename.endswith('threading.py'):