[Python-checkins] bpo-30983: eval frame rename in pep 0523 broke gdb's python extension (#2803)

Łukasz Langa webhook-mailer at python.org
Mon Aug 14 18:14:20 EDT 2017


https://github.com/python/cpython/commit/2e0f4db114424a00354eab889ba8f7334a2ab8f0
commit: 2e0f4db114424a00354eab889ba8f7334a2ab8f0
branch: master
author: Bruno "Polaco" Penteado <polaco at gmail.com>
committer: Łukasz Langa <lukasz at langa.pl>
date: 2017-08-14T15:14:17-07:00
summary:

bpo-30983: eval frame rename in pep 0523 broke gdb's python extension (#2803)

pep 0523 renames PyEval_EvalFrameEx to _PyEval_EvalFrameDefault while the gdb python extension only looks for PyEval_EvalFrameEx to understand if it is dealing with a frame.

Final effect is that attaching gdb to a python3.6 process doesnt resolve python objects. Eg. py-list and py-bt dont work properly.

This patch fixes that. Tested locally on python3.6

files:
M Tools/gdb/libpython.py

diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py
index cc23b8402df..7c8874a7ace 100755
--- a/Tools/gdb/libpython.py
+++ b/Tools/gdb/libpython.py
@@ -1502,8 +1502,10 @@ def is_python_frame(self):
         return False
 
     def is_evalframeex(self):
-        '''Is this a PyEval_EvalFrameEx frame?'''
-        if self._gdbframe.name() == 'PyEval_EvalFrameEx':
+        '''Is this a PyEval_EvalFrameEx or _PyEval_EvalFrameDefault (PEP 0523)
+        frame?'''
+        if self._gdbframe.name() in ('PyEval_EvalFrameEx',
+                                     '_PyEval_EvalFrameDefault'):
             '''
             I believe we also need to filter on the inline
             struct frame_id.inline_depth, only regarding frames with



More information about the Python-checkins mailing list