pprof/backtrace/
backtrace_rs.rs

1impl super::Frame for backtrace::Frame {
2    type S = backtrace::Symbol;
3
4    fn ip(&self) -> usize {
5        self.ip() as usize
6    }
7
8    fn resolve_symbol<F: FnMut(&Self::S)>(&self, cb: F) {
9        backtrace::resolve_frame(self, cb);
10    }
11
12    fn symbol_address(&self) -> *mut libc::c_void {
13        self.symbol_address()
14    }
15}
16
17pub struct Trace {}
18
19impl super::Trace for Trace {
20    type Frame = backtrace::Frame;
21
22    fn trace<F: FnMut(&Self::Frame) -> bool>(_: *mut libc::c_void, cb: F) {
23        unsafe { backtrace::trace_unsynchronized(cb) }
24    }
25}
26
27pub use backtrace::Frame;
28pub use backtrace::Symbol;