Struct Backtrace

Source
pub struct Backtrace {
    pub frames: Vec<*const c_void>,
}
Expand description

A captured stack backtrace.

This type stores the backtrace of a captured stack at a certain point in time. The backtrace is represented as a list of instruction pointers.

§Platform Support

The Backtrace API is only functional on the armv7a-vex-v5 platform target. At the moment, this target only platform that vexide supports, however this may change in the future.

Additionally, backtraces will be unsupported if vexide is compiled without the unwind feature.

§Example

let backtrace = Backtrace::capture();
println!("{backtrace}");

§Symbolication

The number stored in each frame is not particularly meaningful to humans on its own. Using a tool such as llvm-symbolizer or addr2line, it can be turned into a function name and line number to show what functions were being run at the time of the backtrace’s capture.

$ llvm-symbolizer -p -e ./target/armv7a-vex-v5/debug/program_name 0x380217b 0x380209b
my_function at /path/to/project/src/main.rs:30:14

main at /path/to/project/src/main.rs:21:9

Fields§

§frames: Vec<*const c_void>

The instruction pointers of each frame in the backtrace.

Implementations§

Source§

impl Backtrace

Source

pub fn capture() -> Self

Captures a backtrace at the current point of execution.

If a backtrace could not be captured, an empty backtrace is returned.

§Platform Support

Backtraces will be empty on non-vex targets (e.g. WebAssembly) or when the unwind feature is disabled.

Trait Implementations§

Source§

impl Clone for Backtrace

Source§

fn clone(&self) -> Backtrace

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Backtrace

Source§

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

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

impl Display for Backtrace

Source§

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

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

impl PartialEq for Backtrace

Source§

fn eq(&self, other: &Backtrace) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Backtrace

Source§

impl StructuralPartialEq for Backtrace

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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,

Source§

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

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>,

Source§

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.