pub enum UnifiedMemoryInfoList<'a> {
    Maps(MinidumpLinuxMaps<'a>),
    Info(MinidumpMemoryInfoList<'a>),
}
Expand description

Provides a unified interface for getting metadata about the process’s mapped memory regions at the time of the crash.

Currently this is one of MinidumpMemoryInfoList, available in Windows minidumps, or MinidumpLinuxMaps, available in Linux minidumps.

This allows you to e.g. check whether an address was executable or not without worrying about which platform the crash occured on. If you need to do more specific analysis, you can get the native formats with UnifiedMemoryInfoList::info and UnifiedMemoryInfoList::maps.

Currently an enum because there is no situation where you can have both, but this may change if the format evolves. Prefer using this type’s methods over pattern matching.

Variants§

Implementations§

source§

impl<'a> UnifiedMemoryInfoList<'a>

source

pub fn new( info: Option<MinidumpMemoryInfoList<'a>>, maps: Option<MinidumpLinuxMaps<'a>> ) -> Option<Self>

Take two potential memory info sources and create an interface that unifies them.

Under normal circumstances a minidump should only contain one of these. If both are provided, one will be arbitrarily preferred to attempt to make progress.

source

pub fn memory_info_at_address( &self, address: u64 ) -> Option<UnifiedMemoryInfo<'_>>

Return a MinidumpMemory containing memory at address, if one exists.

source

pub fn iter(&self) -> impl Iterator<Item = UnifiedMemoryInfo<'_>>

Iterate over the memory regions in the order contained in the minidump.

source

pub fn by_addr(&self) -> impl Iterator<Item = UnifiedMemoryInfo<'_>>

Iterate over the memory regions in order by memory address.

source

pub fn print<T: Write>(&self, f: &mut T) -> Result<()>

Write a human-readable description of this MinidumpMemoryList to f.

This is very verbose, it is the format used by minidump_dump.

source

pub fn maps(&self) -> Option<&MinidumpLinuxMaps<'a>>

Get the MinidumpLinuxMaps contained inside, if it exists.

Potentially useful for doing a more refined analysis in specific places.

source

pub fn info(&self) -> Option<&MinidumpMemoryInfoList<'a>>

Get the MinidumpMemoryInfoList contained inside, if it exists.

Potentially useful for doing a more refined analysis in specific places.

Trait Implementations§

source§

impl<'a> Clone for UnifiedMemoryInfoList<'a>

source§

fn clone(&self) -> UnifiedMemoryInfoList<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for UnifiedMemoryInfoList<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> Default for UnifiedMemoryInfoList<'a>

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more