An interactive debugger for Clojure providing breakpoints, local variable inspection, and REPL-driven debugging.
Debugger is a Clojure library that provides interactive debugging features like breakpoints, local variable inspection, and REPL integration. It solves the problem of limited debugging tools in the Clojure ecosystem by allowing developers to pause execution, examine state, and control program flow directly from a REPL session.
Clojure developers who need a more interactive and inspectable debugging experience than what standard print-based logging or basic REPL evaluation offers.
Developers choose Debugger because it brings traditional interactive debugging capabilities to Clojure, featuring breakpoints, stack inspection, and local variable access in a REPL-centric workflow, filling a notable gap in the language's tooling.
The missing tool
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows pausing execution at any point with `break` or `break-catch`, entering a debug REPL for real-time inspection, as demonstrated in the usage examples.
Provides direct inspection of all locals in scope via the `locals` command or by referencing variable names, enabling quick state examination without code modification.
Enables overriding expression results by returning non-nil values from the debug REPL, useful for testing and scenario simulation, shown in the 'Return value control' section.
Supports breakpoints in separate threads with `connect` command, allowing interactive debugging of concurrent code, as illustrated in the 'Breakpoints in threads' example.
Lacks advanced step-through features like `step`, `up`, and `down` for stack navigation, which are explicitly noted as TODO in the README, limiting fine-grained execution control.
Requires an active REPL session for interactive use, making it less suitable for automated debugging or environments where REPL integration is cumbersome or unavailable.
Involves managing dynamic vars like `*break-outside-repl*`, which had a default value change between versions (0.1.x to 0.2.0), indicating potential breaking changes and setup overhead.