-
Notifications
You must be signed in to change notification settings - Fork 130
Open
Description
The example in https://github.com/tikv/pprof-rs?tab=readme-ov-file#use-with-pprof does not compile. I had to make some changes:
First, we need to enable the prost-codec instead of protobuf feature in Cargo.toml (but documentation mentions to use protobuf):
pprof = { version = "0.15.0", features = ["prost-codec"] }for the report println, had to change {} to {:?} because the report does not implement Display
Then in the code,
use pprof::protos::Message;
use std::fs::File;
use std::io::Write;
[...]
// Added in program start
let guard = pprof::ProfilerGuardBuilder::default().frequency(1000).blocklist(&["libc", "libgcc", "pthread", "vdso"]).build().unwrap();
[...]
// For output in profile.proto format:
match guard.report().build() {
Ok(report) => {
let mut file = File::create("profile.pb").unwrap();
let profile = report.pprof().unwrap();
let mut content = Vec::new();
profile.encode(&mut content).unwrap();
file.write_all(&content).unwrap();
println!("report: {:?}", &report);
}
Err(_) => {}
};This works. But if we had used protobuf feature, or did not include pprof::protos::Message we would have issue with profile.encode not being found.
superkooks and shenwei356
Metadata
Metadata
Assignees
Labels
No labels