use tsc_trace::*;
#[allow(dead_code)]
enum Traces {
Main = 0,
SomeFunction = 1,
SomeEvent = 2,
}
fn main() -> std::io::Result<()> {
{
trace_span!(Traces::Main); for _ in 1..10 {
some_function();
}
}
insert_trace!(
Traces::SomeEvent,
rdtsc(),
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_nanos()
);
let stdout = std::io::stdout();
let mut lock = stdout.lock();
write_traces_csv(&mut lock)?;
if TSC_TRACE_CAPACITY > 0 {
let mut bin = std::fs::File::create("/tmp/traces")?;
write_traces_binary(&mut bin)?;
} else {
println!("tracing is off, not writing binary file");
}
Ok(())
}
fn some_function() {
trace_span!(Traces::SomeFunction);
println!("doing some work in some_function");
}