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