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>