diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2010-04-21 06:05:58 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2010-04-21 06:05:58 (GMT) |
commit | 5226fd66e1a251cc9852b77e9e002ea754d7bc65 (patch) | |
tree | 1db7e4d0003ccd7fffa2d0a892bd67229c718e19 /Tools/gdb | |
parent | ae2a0aeb3ce9cf877ecbd7f6b9210d98af292deb (diff) | |
download | cpython-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')
-rw-r--r-- | Tools/gdb/libpython.py | 19 |
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 |