A Clojure(Script) library providing reader tags for trace-oriented debugging of single- and multi-threaded applications.
Spyscope is a Clojure and ClojureScript library designed for trace-oriented debugging. It provides reader tags that allow developers to instrument code with minimal syntax, offering detailed insights into program execution, especially in multi-threaded scenarios. It solves the problem of understanding complex program flow and state changes during debugging.
Clojure and ClojureScript developers working on applications where understanding execution flow, especially in concurrent or multi-threaded contexts, is critical.
Developers choose Spyscope for its low-overhead instrumentation via reader tags, rich contextual debugging with stack traces and filtering, and its unique ability to handle multi-threaded debugging without interleaved output.
Trace-oriented debugging tools for Clojure
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses reader tags like #spy/p, #spy/d, #spy/t to instrument code with just six characters, reducing keystrokes and optimizing developer efficiency.
Provides stack traces, timestamps, markers, and configurable filtering (e.g., :nses regex) to give detailed insights into execution, especially useful for complex flows.
Prints on a dedicated tracing thread to prevent interleaved output from multiple threads, making it ideal for debugging multi-threaded applications.
Stores traces in generations with functions like trace-query and trace-next, allowing post-hoc comparison across runs to understand code changes over time.
Requires manual injections in Leiningen profiles or additional steps in Boot (e.g., load-data-readers!), which can be error-prone and hinder quick adoption.
Asynchronous tracing and reader tags introduce runtime cost, making it less suitable for production environments or high-performance debugging scenarios.
Primarily console-based, lacking built-in support for graphical debuggers in popular Clojure IDEs, which may limit its appeal for visual debugging workflows.