mod include; extern crate rbspy; use crate::include::path_to_ruby_binary; use rbspy::recorder::{RecordConfig, Recorder}; use rbspy::OutputFormat; fn main() { let mut process = std::process::Command::new(path_to_ruby_binary()) .arg("ci/ruby-programs/infinite.rb") .spawn() .unwrap(); let out_path = std::path::PathBuf::from("rbspy-out.svg"); let config = RecordConfig { format: OutputFormat::flamegraph, raw_path: Some(std::path::PathBuf::from("rbspy-raw.txt")), out_path: Some(out_path.clone()), pid: process.id() as rbspy::Pid, with_subprocesses: false, sample_rate: 99, maybe_duration: Some(std::time::Duration::from_secs(1)), flame_min_width: 10.0, lock_process: true, force_version: None, }; let recorder = Recorder::new(config); match recorder.record() { Ok(_) => println!( "A flamegraph was saved to {}", out_path.display().to_string() ), Err(e) => println!("Failed to record: {:?}", e), } process.kill().expect("couldn't clean up ruby process"); }