When the debugged program stops, gdb is able to analyze its call
stack (see Stack frames). The gdb.Frame
class
represents a frame in the stack. A gdb.Frame
object is only valid
while its corresponding frame exists in the inferior's stack. If you try
to use an invalid frame object, gdb will throw a gdb.error
exception (see Exception Handling).
Two gdb.Frame
objects can be compared for equality with the ==
operator, like:
(gdb) python print gdb.newest_frame() == gdb.selected_frame () True
The following frame-related functions are available in the gdb
module:
Return a string explaining the reason why gdb stopped unwinding frames, as expressed by the given reason code (an integer, see the
unwind_stop_reason
method further down in this section).
A gdb.Frame
object has the following methods:
Returns true if the
gdb.Frame
object is valid, false if not. A frame object can become invalid if the frame it refers to doesn't exist anymore in the inferior. Allgdb.Frame
methods will throw an exception if it is invalid at the time the method is called.
Returns the type of the frame. The value can be one of:
gdb.NORMAL_FRAME
- An ordinary stack frame.
gdb.DUMMY_FRAME
- A fake stack frame that was created by gdb when performing an inferior function call.
gdb.INLINE_FRAME
- A frame representing an inlined function. The function was inlined into a
gdb.NORMAL_FRAME
that is older than this one.gdb.SIGTRAMP_FRAME
- A signal trampoline frame. This is the frame created by the OS when it calls into a signal handler.
gdb.ARCH_FRAME
- A fake stack frame representing a cross-architecture call.
gdb.SENTINEL_FRAME
- This is like
gdb.NORMAL_FRAME
, but it is only used for the newest frame.
Return an integer representing the reason why it's not possible to find more frames toward the outermost frame. Use
gdb.frame_stop_reason_string
to convert the value returned by this function to a string.
Return the symbol for the function corresponding to this frame. See Symbols In Python.
Return the value of variable in this frame. If the optional argument block is provided, search for the variable from that block; otherwise start at the frame's current block (which is determined by the frame's current program counter). variable must be a string or a
gdb.Symbol
object. block must be agdb.Block
object.