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

Converts self into T using Into<T>. Read more

Given the context attached to a nom error, and given the original input to the nom parser, extract more the useful context information. Read more

Causes self to use its Binary implementation when Debug-formatted. Read more

Causes self to use its Display implementation when Debug-formatted. Read more

Causes self to use its LowerExp implementation when Debug-formatted. Read more

Causes self to use its LowerHex implementation when Debug-formatted. Read more

Causes self to use its Octal implementation when Debug-formatted. Read more

Causes self to use its Pointer implementation when Debug-formatted. Read more

Causes self to use its UpperExp implementation when Debug-formatted. Read more

Causes self to use its UpperHex implementation when Debug-formatted. Read more

Formats each item in a sequence. 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.

Pipes by value. This is generally the method you want to use. Read more

Borrows self and passes that borrow into the pipe function. Read more

Mutably borrows self and passes that borrow into the pipe function. Read more

Borrows self, then passes self.borrow() into the pipe function. Read more

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more

Borrows self, then passes self.as_ref() into the pipe function.

Mutably borrows self, then passes self.as_mut() into the pipe function. Read more

Borrows self, then passes self.deref() into the pipe function.

Mutably borrows self, then passes self.deref_mut() into the pipe function. Read more

Given the original input, as well as the context reported by nom, recreate a context in the original string where the error occurred. Read more

Immutable access to a value. Read more

Mutable access to a value. Read more

Immutable access to the Borrow<B> of a value. Read more

Mutable access to the BorrowMut<B> of a value. Read more

Immutable access to the AsRef<R> view of a value. Read more

Mutable access to the AsMut<R> view of a value. Read more

Immutable access to the Deref::Target of a value. Read more

Mutable access to the Deref::Target of a value. Read more

Calls .tap() only in debug builds, and is erased in release builds.

Calls .tap_mut() only in debug builds, and is erased in release builds. Read more

Calls .tap_borrow() only in debug builds, and is erased in release builds. Read more

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds. Read more

Calls .tap_ref() only in debug builds, and is erased in release builds. Read more

Calls .tap_ref_mut() only in debug builds, and is erased in release builds. Read more

Calls .tap_deref() only in debug builds, and is erased in release builds. Read more

Calls .tap_deref_mut() only in debug builds, and is erased in release builds. Read more

Attempts to convert self into T using TryInto<T>. Read more

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.