Next: , Previous: Frames In Python, Up: Python API


23.2.2.17 Accessing frame blocks from Python.

Within each frame, gdb maintains information on each block stored in that frame. These blocks are organized hierarchically, and are represented individually in Python as a gdb.Block. Please see Frames In Python, for a more in-depth discussion on frames. Furthermore, see Examining the Stack, for more detailed technical information on gdb's book-keeping of the stack.

A gdb.Block is iterable. The iterator returns the symbols (see Symbols In Python) local to the block.

The following block-related functions are available in the gdb module:

— Function: gdb.block_for_pc (pc)

Return the gdb.Block containing the given pc value. If the block cannot be found for the pc value specified, the function will return None.

A gdb.Block object has the following methods:

— Function: Block.is_valid ()

Returns True if the gdb.Block object is valid, False if not. A block object can become invalid if the block it refers to doesn't exist anymore in the inferior. All other gdb.Block methods will throw an exception if it is invalid at the time the method is called. The block's validity is also checked during iteration over symbols of the block.

A gdb.Block object has the following attributes:

— Variable: Block.start

The start address of the block. This attribute is not writable.

— Variable: Block.end

The end address of the block. This attribute is not writable.

— Variable: Block.function

The name of the block represented as a gdb.Symbol. If the block is not named, then this attribute holds None. This attribute is not writable.

— Variable: Block.superblock

The block containing this block. If this parent block does not exist, this attribute holds None. This attribute is not writable.

— Variable: Block.global_block

The global block associated with this block. This attribute is not writable.

— Variable: Block.static_block

The static block associated with this block. This attribute is not writable.

— Variable: Block.is_global

True if the gdb.Block object is a global block, False if not. This attribute is not writable.

— Variable: Block.is_static

True if the gdb.Block object is a static block, False if not. This attribute is not writable.