summaryrefslogtreecommitdiffstats
path: root/Tools/gdb/libpython.py
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2010-04-21 06:05:58 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2010-04-21 06:05:58 (GMT)
commit5226fd66e1a251cc9852b77e9e002ea754d7bc65 (patch)
tree1db7e4d0003ccd7fffa2d0a892bd67229c718e19 /Tools/gdb/libpython.py
parentae2a0aeb3ce9cf877ecbd7f6b9210d98af292deb (diff)
downloadcpython-5226fd66e1a251cc9852b77e9e002ea754d7bc65.zip
cpython-5226fd66e1a251cc9852b77e9e002ea754d7bc65.tar.gz
cpython-5226fd66e1a251cc9852b77e9e002ea754d7bc65.tar.bz2
Merged revisions 79986-79987,80156 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r79986 | martin.v.loewis | 2010-04-12 07:18:16 +0200 (Mo, 12 Apr 2010) | 2 lines Issue #8330: Fix expected output in test_gdb. ........ r79987 | martin.v.loewis | 2010-04-12 07:22:25 +0200 (Mo, 12 Apr 2010) | 2 lines Re-enable all tests, to see which ones fail on the buildbots. ........ r80156 | martin.v.loewis | 2010-04-18 00:40:40 +0200 (So, 18 Apr 2010) | 2 lines Issue #8279: Fix test_gdb failures. ........
Diffstat (limited to 'Tools/gdb/libpython.py')
-rw-r--r--Tools/gdb/libpython.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py
index 3050c89..f62735f 100644
--- a/Tools/gdb/libpython.py
+++ b/Tools/gdb/libpython.py
@@ -1097,6 +1097,11 @@ def register (obj):
register (gdb.current_objfile ())
+
+# Unfortunately, the exact API exposed by the gdb module varies somewhat
+# from build to build
+# See http://bugs.python.org/issue8279?#msg102276
+
class Frame(object):
'''
Wrapper for gdb.Frame, adding various methods
@@ -1119,7 +1124,16 @@ class Frame(object):
return None
def select(self):
+ '''If supported, select this frame and return True; return False if unsupported
+
+ Not all builds have a gdb.Frame.select method; seems to be present on Fedora 12
+ onwards, but absent on Ubuntu buildbot'''
+ if not hasattr(self._gdbframe, 'select'):
+ print ('Unable to select frame: '
+ 'this build of gdb does not expose a gdb.Frame.select method')
+ return False
self._gdbframe.select()
+ return True
def get_index(self):
'''Calculate index of frame, starting at 0 for the newest frame within
@@ -1133,6 +1147,7 @@ class Frame(object):
return index
def is_evalframeex(self):
+ '''Is this a PyEval_EvalFrameEx frame?'''
if self._gdbframe.name() == 'PyEval_EvalFrameEx':
'''
I believe we also need to filter on the inline
@@ -1270,8 +1285,8 @@ def move_in_stack(move_up):
if iter_frame.is_evalframeex():
# Result:
- iter_frame.select()
- iter_frame.print_summary()
+ if iter_frame.select():
+ iter_frame.print_summary()
return
frame = iter_frame