, d b calls the
cider-debug-defn-breakpoint command that sets breakpoints on the expression under the cursor. If the expression is a function definition, then its name is marked as instrumented by the debug along with any calls to that function.
A debug menu appears above the expression, press
n to step through each expression and see the inline result.
Switch to Emacs Edit mode for full menu
C-z after starting cider-debug to use
c e i p s menu keys as otherwise they call the Evil normal state commands.
C-z to switch back to Evil normal state.
Conditional break pointsλ︎
:break/when metadata on a
#dbg directive defines a condition when a breakpoint is triggered, allowing the evaluation to iterate until a desirable point is reached.
Setting a condition is especially useful when there are many iterations required before reaching a point of issue, for example iterating through a large data set.
#break can be added on any Clojure form. In this example the evaluation will break on each iteration of the sequence, showing the local value of the index.
Add a break condition within the expression to be evaluated and the evaluation will iterate until the condition is met and then break
n to continue to the next break point will complete the evaluation as the break condition is no longer met
The evaluation will break each time a condition is met, so a break will occur multiple times when the value of index is odd
Skip over lazy functionsλ︎
o (out) will jump out of evaluating an expression.
Use out to jump over evaluating code that has functions generating lazy infinite sequences, such as
cycle. Cider debug will then evaluate those functions in their outer expression where it should be safe to do so.