Mercurial > cpython-lru_cache-weakref
diff Tools/gdb/libpython.py @ 60664:d7d5c76545fb legacy-trunk
Issue #8279: Fix test_gdb failures.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Sat, 17 Apr 2010 22:40:40 +0000 |
| parents | 6de3de3ab71f |
| children | 86d08cb6ba5c |
line wrap: on
line diff
--- a/Tools/gdb/libpython.py Sat Apr 17 21:59:26 2010 +0000 +++ b/Tools/gdb/libpython.py Sat Apr 17 22:40:40 2010 +0000 @@ -1097,6 +1097,11 @@ 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 @@ 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,8 +1147,9 @@ return index def is_evalframeex(self): + '''Is this a PyEval_EvalFrameEx frame?''' if self._gdbframe.function(): - if self._gdbframe.function().name == 'PyEval_EvalFrameEx': + if self._gdbframe.name() == 'PyEval_EvalFrameEx': ''' I believe we also need to filter on the inline struct frame_id.inline_depth, only regarding frames with @@ -1271,8 +1286,8 @@ 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
