
3.3 Using Debugger commands
unwind-protect forms, and special bindings is presented in dynamic context markers. A dynamic context marker contains one of the following:
unwind-protect indicatorunwind-protect forms exist;unwind-protect forms must be evaluated if you throw past them.
:bm command displays the list of function calls and dynamic context markers from the specified frame to the bottom of the stack.:nm command moves down the stack by one frame or dynamic context marker.:pm command moves up the stack by one frame or dynamic context marker.
;;; Define two functions that are linked by an incorrect
;;; catch and throw.
> (defun catcher ()
(catch 'here (thrower)))
CATCHER
> (defun thrower ()
(throw 'there t))
THROWER
> (compile 'catcher)
CATCHER
> (catcher)
>>Error: Uncaught THROW to tag THERE
THROWER:
Original code: (NAMED-LAMBDA THROWER NIL
(BLOCK THROWER (THROW # T)))
:A 0: Abort to Lisp Top Level
-> :bm
THROWER <- [:CATCH HERE] <- CATCHER <- EVAL
-> :nm
[:CATCH]:
Catch 0 (TAG): HERE
-> :s 0 'there
-> :d
>>Error: Uncaught THROW to tag THERE
[:CATCH]:
Catch 0 (TAG): THERE
:A 0: Abort to Lisp Top Level
-> :pm
THROWER:
Original code: (NAMED-LAMBDA THROWER NIL (BLOCK THROWER (THROW # T)))
-> :f
Re-executing (THROWER), OK? (Y or N): y
T
>

Generated with Harlequin WebMaker