[][src]Trait symbolic_debuginfo::DebugSession

pub trait DebugSession {
    type Error;
    fn functions(&mut self) -> DynIterator<Result<Function, Self::Error>>;
}

A stateful session for interfacing with debug information.

Debug sessions can be obtained via ObjectLike::debug_session. Since computing a session may be a costly operation, try to reuse the session as much as possible.

Implementing DebugSession

Reading debug information from object files usually requires loading multiple sections into memory and computing maps for quick random access to certain information. Since this can be a quite costly process, this is encapsulated into a DebugSession. The session may hold whatever data and caches may be necessary for efficiently interfacing with the debug info.

All trait methods on a DebugSession receive &mut self, to allow mutation of internal cache structures. Lifetimes of returned types are tied to this session's lifetime, which allows to borrow data from the session.

Examples for things to compute when building a debug session are:

  • Decompress debug information if it is stored with compression.
  • Build a symbol map for random access to public symbols.
  • Map string tables and other lookup tables.
  • Read headers of compilation units (compilands) to resolve cross-unit references.

Associated Types

type Error

The error returned when reading debug information fails.

Loading content...

Required methods

fn functions(&mut self) -> DynIterator<Result<Function, Self::Error>>

Returns an iterator over all functions in this debug file.

The iteration is guaranteed to be sorted by function address and includes all compilation units. Note that the iterator holds a mutable borrow on the debug session, which allows it to use caches and optimize resources while resolving function and line information.

Loading content...

Implementors

impl<'_> DebugSession for ObjectDebugSession<'_>[src]

impl<'_> DebugSession for PdbDebugSession<'_>[src]

type Error = PdbError

impl<'_> DebugSession for PeDebugSession<'_>[src]

type Error = PeError

impl<'d> DebugSession for BreakpadDebugSession<'d>[src]

impl<'d> DebugSession for DwarfDebugSession<'d>[src]

Loading content...