This displays information about the current stack frame. In the case of a call frame corresponding to a compiled function the names and values of the function's arguments are shown. Closure variables (either from an outer scope or used by an inner scope) and special variables are indicated by {Closing} or {Special} as in this session:
CL-USER 40 > (compile (defun foo (*zero* one two) (declare (special *zero*)) (divider one *zero*) (list #'(lambda () one) two)))
FOO
NIL
NIL
CL-USER 41 > (foo 0 1 2)
Error: Division-by-zero caused by / of (1 0).
1 (continue) Return a value to use.
2 Supply new arguments to use.
3 (abort) Return to level 0.
4 Return to top loop level 0.
Type :b for backtrace, :c <option number> to proceed, or :? for other options
CL-USER 42 : 1 > :v
Call to FOO (offset 87)
*ZERO* {Special} : 0
ONE {Closing} : 1
TWO : 2
CL-USER 43 : 1 >
For an interpreted function the names and values of local variables are also shown.
If the value of an argument is not known (perhaps because the code has been compiled for speed rather than other considerations), then it is printed as the keyword
:dont-know
.
:l [
m
|
var-name
|
var-name-substring
]
By default this prints a list of the values of all the local variables in the current frame. If the command is followed by a number then it prints the value of the
m
'th local variables (counting from 0, in the order shown by the
:v
command). If it is followed by a variable name
var-name
then it prints the value of that variable (note that the same effect can be achieved by just entering the name of the variable into the Listener). If it is followed by a string
var-name-substring
then it prints the value of the first variable whose name contains
var-name-substring
.
In all cases,
*
is set to the printed value.
This reprints the message which was displayed upon entry to the current level of the debugger. This is typically an error message and includes several continuation options.
:cc &optional
var
This returns the current condition object which caused entry to this level of the debugger. If an optional var is supplied then this must be a symbol, whose symbol-value is set to the value of the condition object.
This allows you to edit the function associated with the current frame. If you are using TAGS, you are prompted for a TAGS file.
:all &optional
flag
This option enables you to set the debugger option to show all frames (if
flag
is non-
nil
), or back to the default (if
flag
is
nil
). By default,
flag
is
t
.
This returns the lambda expression for an anonymous interpreted frame. If the expression is not known, then it is printed as the keyword
:dont-know
This command prints symbols from other packages corresponding to the symbol that was called, but could not be found, in the current package. Any such symbols are also offered as restarts when you first enter the debugger.
NEW 21 > (initialize-graphics-port)
Error: Undefined function INITIALIZE-GRAPHICS-PORT called with arguments ().
1 (continue) Try invoking INITIALIZE-GRAPHICS-PORT again.
2 Return some values from the call to INITIALIZE-GRAPHICS-PORT.
3 Try invoking GRAPHICS-PORTS:INITIALIZE-GRAPHICS-PORT with the same arguments.
4 Set the symbol-function of INITIALIZE-GRAPHICS-PORT to the symbol-function of GRAPHICS-PORTS:INITIALIZE-GRAPHICS-PORT.
5 Try invoking something other than INITIALIZE-GRAPHICS-PORT with the same arguments.
6 Set the symbol-function of INITIALIZE-GRAPHICS-PORT to another function.
7 (abort) Return to level 0.
8 Return to top loop level 0.
Type :c followed by a number to proceed or type :? for other options
NEW 22 : 1 > :lf
Possible candidates are (GRAPHICS-PORTS:INITIALIZE-GRAPHICS-PORT)
GRAPHICS-PORTS:INITIALIZE-GRAPHICS-PORT
NEW 23 : 1 >