mirror of
https://github.com/python/cpython.git
synced 2025-10-13 18:33:34 +00:00
Prevent debugger from stepping into Idle rpc code
This commit is contained in:
parent
de3337913f
commit
067d734f9e
1 changed files with 17 additions and 5 deletions
|
@ -13,13 +13,23 @@ class Idb(bdb.Bdb):
|
||||||
bdb.Bdb.__init__(self)
|
bdb.Bdb.__init__(self)
|
||||||
|
|
||||||
def user_line(self, frame):
|
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_filename = frame.f_code.co_filename
|
||||||
co_name = frame.f_code.co_name
|
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:
|
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]
|
func = frame.f_locals[co_name]
|
||||||
if getattr(func, "DebuggerStepThrough", 0):
|
if getattr(func, "DebuggerStepThrough", 0):
|
||||||
print "XXXX DEBUGGER STEPPING THROUGH"
|
print "XXXX DEBUGGER STEPPING THROUGH"
|
||||||
|
@ -27,7 +37,9 @@ class Idb(bdb.Bdb):
|
||||||
return
|
return
|
||||||
except:
|
except:
|
||||||
pass
|
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()
|
self.set_step()
|
||||||
return
|
return
|
||||||
if co_filename.endswith('threading.py'):
|
if co_filename.endswith('threading.py'):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue