Skip to content

Commit

Permalink
feat: adds a drop last step trace event
Browse files Browse the repository at this point in the history
  • Loading branch information
alehander92 committed Jul 25, 2024
1 parent ea49269 commit ed5a405
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "runtime_tracing"
version = "0.5.12-experimental-1"
version = "0.5.12-experimental-2"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
Expand Down
11 changes: 9 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,14 @@ mod tests {
// -> function_id 1 after top level;
let function_id = tracer.ensure_function_id("function", &path, function_line);
assert!(function_id == FunctionId(1));


let before_temp_step = tracer.events.len();
tracer.register_step(path, function_line);
tracer.drop_last_step();
// drop last step: drops steps[-1]/variables[-]
assert_eq!(before_temp_step + 2, tracer.events.len());
assert!(matches!(tracer.events.last().unwrap(), TraceLowLevelEvent::DropLastStep));

let args = vec![tracer.arg("a", NONE_VALUE), tracer.arg("b", NONE_VALUE)];
tracer.register_call(function_id, args);
// => arg-related variable/value events; auto call-step event; potentially variables; call event
Expand Down Expand Up @@ -63,7 +70,7 @@ mod tests {

tracer.register_return(NONE_VALUE);

assert_eq!(tracer.events.len(), 21);
assert_eq!(tracer.events.len(), 23);
// visible with
// cargo tets -- --nocapture
// println!("{:#?}", tracer.events);
Expand Down
4 changes: 4 additions & 0 deletions src/tracer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,10 @@ impl Tracer {
self.events.push(TraceLowLevelEvent::Value(FullValueRecord { variable_id, value }));
}

pub fn drop_last_step(&mut self) {
self.events.push(TraceLowLevelEvent::DropLastStep);
}

pub fn store_trace_metadata(&self, path: &Path) -> Result<(), Box<dyn Error>> {
let trace_metadata = TraceMetadata {
program: self.program.clone(),
Expand Down
1 change: 1 addition & 0 deletions src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ pub enum TraceLowLevelEvent {
Call(CallRecord),
Return(ReturnRecord),
Event(RecordEvent),
DropLastStep,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
Expand Down

0 comments on commit ed5a405

Please sign in to comment.