Crate rstack_self [−] [src]
Retrieve stack traces of all threads of the process.
This is implemented using the rstack crate, which itself uses libunwind's ability to trace remote processes using ptrace. Because processes cannot ptrace themselves, we're forced to use spawn a child process which does that work.
Example
extern crate rstack_self; use std::env; use std::process::Command; use std::thread; fn main() { if env::args_os().count() > 1 { let _ = rstack_self::child(); return; } // spawn a second thread just for fun thread::spawn(background_thread); let exe = env::current_exe().unwrap(); let trace = rstack_self::trace(Command::new(exe).arg("child")).unwrap(); println!("{:#?}", trace); } fn background_thread() { loop { thread::park(); } }
Structs
Error |
The error type returned by methods in this crate. |
Frame |
Information about a stack frame. |
Symbol |
Information about a symbol. |
Thread |
Information about a thread. |
Functions
child |
The function called by process spawned by a call to |
trace |
Returns stack traces of all of the threads the calling process. |
Type Definitions
Result |
The result type returned by methods in this crate. |