One of CMU Common Lisp's unique capabilities is source level debugging of compiled code. These commands display the source location for the current frame:
The source form for a location in the code is the innermost list present in the original source that encloses the form responsible for generating that code. If the actual source form is not a list, then some enclosing list will be printed. For example, if the source form was a reference to the variable *some-random-special*, then the innermost enclosing evaluated form will be printed. Here are some possible enclosing forms:
(let ((a *some-random-special*)) ...)(+ *some-random-special* ...)
If the code at a location was generated from the expansion of a macro or a source-level compiler optimization, then the form in the original source that expanded into that code will be printed. Suppose the file `/usr/me/mystuff.lisp' looked like this:
If foo has called myfun, and is waiting for it to return, then the source command would print:(defmacro mymac () '(myfun))(defun foo () (mymac) ...)
Note that the macro use was printed, not the actual function call form, (myfun).; File: /usr/me/mystuff.lisp(MYMAC)
If enclosing source is printed by giving an argument to source or vsource, then the actual source form is marked by wrapping it in a list whose first element is #:***HERE***. In the previous example, source 1 would print:
; File: /usr/me/mystuff.lisp(DEFUN FOO () (#:***HERE*** (MYMAC)) ...)