MCPcopy Index your code
hub / github.com/python/cpython / Frame

Class Frame

Tools/gdb/libpython.py:1714–1925  ·  view source on GitHub ↗

Wrapper for gdb.Frame, adding various methods

Source from the content-addressed store, hash-verified

1712# See http://bugs.python.org/issue8279?#msg102276
1713
1714class Frame(object):
1715 '''
1716 Wrapper for gdb.Frame, adding various methods
1717 '''
1718 def __init__(self, gdbframe):
1719 self._gdbframe = gdbframe
1720
1721 def older(self):
1722 older = self._gdbframe.older()
1723 if older:
1724 return Frame(older)
1725 else:
1726 return None
1727
1728 def newer(self):
1729 newer = self._gdbframe.newer()
1730 if newer:
1731 return Frame(newer)
1732 else:
1733 return None
1734
1735 def select(self):
1736 '''If supported, select this frame and return True; return False if unsupported
1737
1738 Not all builds have a gdb.Frame.select method; seems to be present on Fedora 12
1739 onwards, but absent on Ubuntu buildbot'''
1740 if not hasattr(self._gdbframe, 'select'):
1741 print ('Unable to select frame: '
1742 'this build of gdb does not expose a gdb.Frame.select method')
1743 return False
1744 self._gdbframe.select()
1745 return True
1746
1747 def get_index(self):
1748 '''Calculate index of frame, starting at 0 for the newest frame within
1749 this thread'''
1750 index = 0
1751 # Go down until you reach the newest frame:
1752 iter_frame = self
1753 while iter_frame.newer():
1754 index += 1
1755 iter_frame = iter_frame.newer()
1756 return index
1757
1758 # We divide frames into:
1759 # - "python frames":
1760 # - "bytecode frames" i.e. PyEval_EvalFrameEx
1761 # - "other python frames": things that are of interest from a python
1762 # POV, but aren't bytecode (e.g. GC, GIL)
1763 # - everything else
1764
1765 def is_python_frame(self):
1766 '''Is this a _PyEval_EvalFrameDefault frame, or some other important
1767 frame? (see is_other_python_frame for what "important" means in this
1768 context)'''
1769 if self.is_evalframe():
1770 return True
1771 if self.is_other_python_frame():

Callers 3

olderMethod · 0.70
newerMethod · 0.70
get_selected_frameMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…