[−][src]Struct backtrace::Backtrace
Representation of an owned and self-contained backtrace.
This structure can be used to capture a backtrace at various points in a program and later used to inspect what the backtrace was at that time.
Backtrace
supports pretty-printing of backtraces through its Debug
implementation.
Required features
This function requires the std
feature of the backtrace
crate to be
enabled, and the std
feature is enabled by default.
Implementations
impl Backtrace
[src]
pub fn new() -> Backtrace
[src]
Captures a backtrace at the callsite of this function, returning an owned representation.
This function is useful for representing a backtrace as an object in Rust. This returned value can be sent across threads and printed elsewhere, and the purpose of this value is to be entirely self contained.
Note that on some platforms acquiring a full backtrace and resolving it
can be extremely expensive. If the cost is too much for your application
it's recommended to instead use Backtrace::new_unresolved()
which
avoids the symbol resolution step (which typically takes the longest)
and allows deferring that to a later date.
Examples
use backtrace::Backtrace; let current_backtrace = Backtrace::new();
Required features
This function requires the std
feature of the backtrace
crate to be
enabled, and the std
feature is enabled by default.
pub fn new_unresolved() -> Backtrace
[src]
Similar to new
except that this does not resolve any symbols, this
simply captures the backtrace as a list of addresses.
At a later time the resolve
function can be called to resolve this
backtrace's symbols into readable names. This function exists because
the resolution process can sometimes take a significant amount of time
whereas any one backtrace may only be rarely printed.
Examples
use backtrace::Backtrace; let mut current_backtrace = Backtrace::new_unresolved(); println!("{:?}", current_backtrace); // no symbol names current_backtrace.resolve(); println!("{:?}", current_backtrace); // symbol names now present
Required features
This function requires the std
feature of the backtrace
crate to be
enabled, and the std
feature is enabled by default.
pub fn frames(&self) -> &[BacktraceFrame]
[src]
Returns the frames from when this backtrace was captured.
The first entry of this slice is likely the function Backtrace::new
,
and the last frame is likely something about how this thread or the main
function started.
Required features
This function requires the std
feature of the backtrace
crate to be
enabled, and the std
feature is enabled by default.
pub fn resolve(&mut self)
[src]
If this backtrace was created from new_unresolved
then this function
will resolve all addresses in the backtrace to their symbolic names.
If this backtrace has been previously resolved or was created through
new
, this function does nothing.
Required features
This function requires the std
feature of the backtrace
crate to be
enabled, and the std
feature is enabled by default.
Trait Implementations
impl Clone for Backtrace
[src]
impl Debug for Backtrace
[src]
impl Default for Backtrace
[src]
impl From<Vec<BacktraceFrame>> for Backtrace
[src]
fn from(frames: Vec<BacktraceFrame>) -> Self
[src]
impl Into<Vec<BacktraceFrame>> for Backtrace
[src]
fn into(self) -> Vec<BacktraceFrame>
[src]
Auto Trait Implementations
impl RefUnwindSafe for Backtrace
impl Send for Backtrace
impl Sync for Backtrace
impl Unpin for Backtrace
impl UnwindSafe for Backtrace
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,