pub struct FrameTable<'s> { /* private fields */ }
Expand description

Describes stack frame layout of functions.

The table contains FrameData entries ordered by PdbInternalRva. Each entry describes a range of instructions starting at code_rva for code_size bytes.

A procedure/function might be described by multiple entries, with the first one declaring is_function_start. To retrieve frame information for a specific function, use FrameTable::iter_at_rva.

Not every function in the image file must have frame data defined for it. Those functions that do not have frame data are assumed to have normal stack frames.

Example

let mut pdb = PDB::open(source)?;

// Read the frame table once and reuse it
let frame_table = pdb.frame_table()?;
let mut frames = frame_table.iter();

// Iterate frame data in RVA order
while let Some(frame) = frames.next()? {
    println!("{:#?}", frame);
}

Implementations

Returns an iterator over all frame data in this table, ordered by code_rva.

Returns an iterator over frame data starting at the given PdbInternalRva.

The first item returned by this iterator covers the given RVA. If the address is not a direct start of a function or block, this is the closest element preceding the block. If no frame data covers the given RVA, the iterator starts at the first item after the RVA. Therefore, check for the desired RVA range when iterating frame data.

To obtain a PdbInternalRva, use PdbInternalSectionOffset::to_internal_rva or Rva::to_internal_rva.

Indicates whether any frame data is available.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.