一个使用 backtrace-rs 实现的 Rust CPU 分析器
pprof 是一个 CPU 分析器,可以轻松集成到 Rust 程序中。 ## 使用方法 首先,获取一个守护进程来开始分析。分析将持续到此守护进程退出。 ```rustlet guard = pprof::ProfilerGuardBuilder::default().frequency(1000).blocklist(&["libc", "libgcc", "pthread", "vdso"]).build().unwrap();
在分析期间,您可以使用此守护进程获取报告。rust
if let Ok(report) = guard.report().build() {
println!("report: {:?}", &report);
};
`Debug` 实现了 `Report`。它会打印一个人类可读的堆栈计数器报告。以下是一个示例:
…
- `cpp` 可启用 cpp demangle。- `flamegraph` 可启用 flamegraph 报告格式。- `prost-codec` 可通过 `prost` 启用 pprof protobuf 报告格式。- `protobuf-codec` 可通过 `protobuf` crate 启用 pprof protobuf 报告格式。- `frame-pointer` 可通过帧指针获取回溯信息。**仅在 nightly 中可用**
## Flamegraph
在生成报告之前,`frame_post_processor` 提供了一个接口,用于修改原始统计数据。如果您想对多个符号/线程进行分组或对某些符号进行解析,则此功能将对您有所帮助。例如:暂无开放 Issues,或尚未同步最近议题。