Struct pdb_addr2line::ContextPdbData [−][src]
pub struct ContextPdbData<'s> { /* fields omitted */ }Expand description
Allows to easily create a Context directly from a pdb::PDB.
let mut pdb = pdb::PDB::open(stream)?; let context_data = pdb_addr2line::ContextPdbData::try_from_pdb(&mut pdb)?; let context = context_data.make_context()?;
Implementation note:
It would be nice if a Context could be created from a PDB directly, without
going through an intermediate ContextPdbData object. However, there doesn’t
seem to be an easy way to do this, due to certain lifetime dependencies: The
Context object wants to store certain objects inside itself (mostly for caching)
which have a lifetime dependency on pdb::ModuleInfo, so the ModuleInfo has to be
owned outside of the Context. So the ContextPdbData object acts as that external
ModuleInfo owner.
Implementations
Create a ContextPdbData from a PDB. This parses many of the PDB
streams and stores them in the ContextPdbData. Most importantly, it builds
a list of all the ModuleInfo objects in the PDB.
Create a Context. This uses the default TypeFormatter settings.
pub fn make_context_with_formatter_flags(
&self,
flags: TypeFormatterFlags
) -> Result<Context<'_, 's, '_>>[src]
pub fn make_context_with_formatter_flags(
&self,
flags: TypeFormatterFlags
) -> Result<Context<'_, 's, '_>>[src]Create a Context, using the specified TypeFormatter flags.
Auto Trait Implementations
impl<'s> !RefUnwindSafe for ContextPdbData<'s>impl<'s> !Send for ContextPdbData<'s>impl<'s> !Sync for ContextPdbData<'s>impl<'s> Unpin for ContextPdbData<'s>impl<'s> !UnwindSafe for ContextPdbData<'s>