Struct pdb_addr2line::Context
source · pub struct Context<'a, 's> { /* private fields */ }
Expand description
The main API of this crate. Resolves addresses to function information.
Implementations
sourceimpl<'a, 's> Context<'a, 's>
impl<'a, 's> Context<'a, 's>
sourcepub fn new_from_parts(
module_info_provider: &'a dyn ModuleProvider<'s>,
sections: &[ImageSectionHeader],
address_map: &'a AddressMap<'s>,
global_symbols: &'a SymbolTable<'s>,
string_table: Option<&'a StringTable<'s>>,
debug_info: &'a DebugInformation<'_>,
type_formatter: MaybeOwned<'a, TypeFormatter<'a, 's>>
) -> Result<Self, Error>
pub fn new_from_parts(
module_info_provider: &'a dyn ModuleProvider<'s>,
sections: &[ImageSectionHeader],
address_map: &'a AddressMap<'s>,
global_symbols: &'a SymbolTable<'s>,
string_table: Option<&'a StringTable<'s>>,
debug_info: &'a DebugInformation<'_>,
type_formatter: MaybeOwned<'a, TypeFormatter<'a, 's>>
) -> Result<Self, Error>
Create a Context
manually. Most consumers will want to use
ContextPdbData::make_context
instead.
However, if you interact with a PDB directly and parse some of its contents for other uses, you may want to call this method in order to avoid overhead from repeatedly parsing the same streams.
sourcepub fn function_count(&self) -> usize
pub fn function_count(&self) -> usize
The number of functions found in public symbols.
sourcepub fn functions(&self) -> FunctionIter<'_, 'a, 's> ⓘ
pub fn functions(&self) -> FunctionIter<'_, 'a, 's> ⓘ
Iterate over all functions in the modules.
sourcepub fn find_function(&self, probe: u32) -> Result<Option<Function>, Error>
pub fn find_function(&self, probe: u32) -> Result<Option<Function>, Error>
Find the function whose code contains the provided address. The return value only contains the function name and the rva range, but no file or line information.
sourcepub fn find_frames(
&self,
probe: u32
) -> Result<Option<FunctionFrames<'_>>, Error>
pub fn find_frames(
&self,
probe: u32
) -> Result<Option<FunctionFrames<'_>>, Error>
Find information about the source code which generated the instruction at the provided address. This information includes the function name, file name and line number, of the containing procedure and of any functions that were inlined into the procedure by the compiler, at that address.
A lot of information is cached so that repeated calls are fast.