4.4.3 Miscellaneous commands


Debugger command

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)))
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 .


Debugger Command

: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.


Debugger command

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.


Debugger command

: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.


Debugger command

This allows you to edit the function associated with the current frame. If you are using TAGS, you are prompted for a TAGS file.


Debugger command

: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 .


Debugger command

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


Debugger command

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
NEW 23 : 1 > 

LispWorks User Guide - 11 Mar 2008