mirror of
https://github.com/python/cpython.git
synced 2025-10-03 05:35:59 +00:00
bpo-45637: Remove broken fallback in gdb helpers to obtain frame variable (GH-29257)
This commit is contained in:
parent
6a1cc8bf8a
commit
f4c03484da
2 changed files with 9 additions and 11 deletions
|
@ -823,6 +823,8 @@ Traceback \(most recent call first\):
|
||||||
foo\(1, 2, 3\)
|
foo\(1, 2, 3\)
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
@unittest.skipIf(python_is_optimized(),
|
||||||
|
"Python was compiled with optimizations")
|
||||||
def test_threads(self):
|
def test_threads(self):
|
||||||
'Verify that "py-bt" indicates threads that are waiting for the GIL'
|
'Verify that "py-bt" indicates threads that are waiting for the GIL'
|
||||||
cmd = '''
|
cmd = '''
|
||||||
|
|
|
@ -1801,17 +1801,13 @@ class Frame(object):
|
||||||
frame = PyFramePtr(frame)
|
frame = PyFramePtr(frame)
|
||||||
if not frame.is_optimized_out():
|
if not frame.is_optimized_out():
|
||||||
return frame
|
return frame
|
||||||
# gdb is unable to get the "frame" argument of PyEval_EvalFrameEx()
|
cframe = self._gdbframe.read_var('cframe')
|
||||||
# because it was "optimized out". Try to get "frame" from the frame
|
if cframe is None:
|
||||||
# of the caller, _PyEval_Vector().
|
return None
|
||||||
orig_frame = frame
|
frame = PyFramePtr(cframe["current_frame"].dereference())
|
||||||
caller = self._gdbframe.older()
|
if frame and not frame.is_optimized_out():
|
||||||
if caller:
|
|
||||||
frame = caller.read_var('frame')
|
|
||||||
frame = PyFramePtr(frame)
|
|
||||||
if not frame.is_optimized_out():
|
|
||||||
return frame
|
return frame
|
||||||
return orig_frame
|
return None
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue