1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//! py-spy: a sampling profiler for python programs
//!
//! This crate lets you use py-spy as a rust library, and gather stack traces from
//! your python process programmatically.
//!
//! # Example:
//!
//! ```rust,no_run
//! fn print_python_stacks(pid: py_spy::Pid) -> Result<(), anyhow::Error> {
//! // Create a new PythonSpy object with the default config options
//! let config = py_spy::Config::default();
//! let mut process = py_spy::PythonSpy::new(pid, &config)?;
//!
//! // get stack traces for each thread in the process
//! let traces = process.get_stack_traces()?;
//!
//! // Print out the python stack for each thread
//! for trace in traces {
//! println!("Thread {:#X} ({})", trace.thread_id, trace.status_str());
//! for frame in &trace.frames {
//! println!("\t {} ({}:{})", frame.name, frame.filename, frame.line);
//! }
//! }
//! Ok(())
//! }
//! ```
extern crate anyhow;
extern crate log;
pub use Config;
pub use PythonSpy;
pub use Pid;
pub use Frame;
pub use StackTrace;