Skip to content

An easy-to-use recorder and viewer for high-performance traces

Notifications You must be signed in to change notification settings

soehrl/tracing-tape

Repository files navigation

Tracing Tape

Dead-simple debugging and profiling of (distributed) Rust applications using the tracing crate. Record trace files and view them within within seconds without complex setup or configuration.

Trace Deck Screenshot

Setup

  1. Add the following dependencies to your application:
cargo add tracing tracing-subscriber tracing-tape-recorder
  1. Add the following code to your application:
use tracing::trace_span;
use tracing_subscriber::{fmt, layer::SubscriberExt, Registry};
use tracing_tape_recorder::TapeRecorder;

let subscriber = Registry::default().with(TapeRecorder::default());
let guard = tracing::subscriber::set_default(subscriber);

// ...

drop(guard);

Running your application will now generate a {name}-{timestamp}.tape file in the current working directory.

Note: it is preferred to use set_default instead of set_global_default to ensure the subsriber is dropped when the guard goes out of scope. See #7 for more information.

Viewing Tape Files

You can use the trace-deck application to view the recorded tape files either by running trace-deck filename.tape or by dragging the files into the window. You can load multiple files simultaneously which can be useful for analyzing workflows across multiple applications (e.g., client-server interactions). Have a look at the getting started guide.

Crates

  • tracing-tape: defines the format of the tape files.
  • tracing-tape-recorder: records trace events to tape files.
  • tracing-tape-parser: parses recorded tape files.
  • trace-deck: GUI application for viewing tape files.

Known Issues

  • Currently there is no way, to configure the tape recorder (#6, #8).
  • Recent data is lost when the tape recorder is not properly dropped (#7).
  • Loading large tape files can be slow (#9).
  • Recording tape files will occasionally cause lag spikes (#10).

About

An easy-to-use recorder and viewer for high-performance traces

Resources

Stars

Watchers

Forks

Packages

No packages published