Next: 3.4.2 Note On Lexical
Up: 3.4 Variable Access
Previous: 3.4 Variable Access
The value of a variable may be unavailable to the debugger in portions of the
program where Common Lisp says that the variable is defined. If a variable value is
not available, the debugger will not let you read or write that variable. With
one exception, the debugger will never display an incorrect value for a
variable. Rather than displaying incorrect values, the debugger tells you the
value is unavailable.
The one exception is this: if you interrupt (e.g., with ) or if there is
an unexpected hardware error such as ``bus error'' (which should only happen
in unsafe code), then the values displayed for arguments to the interrupted
frame might be incorrect.
This exception applies only to the interrupted frame: any frame farther down
the stack will be fine.
The value of a variable may be unavailable for these reasons:
-
The value of the debug optimization quality may have omitted debug
information needed to determine whether the variable is available.
Unless a variable is an argument, its value will only be available when
debug is at least 2.
-
The compiler did lifetime analysis and determined that the value was no longer
needed, even though its scope had not been exited. Lifetime analysis is
inhibited when the debug optimization quality is 3.
-
The variable's name is an uninterned symbol (gensym). To save space, the
compiler only dumps debug information about uninterned variables when the
debug optimization quality is 3.
-
The frame's location is unknown (see section 3.3.6) because
the debugger was entered due to an interrupt or unexpected hardware error.
Under these conditions the values of arguments will be available, but might be
incorrect. This is the exception above.
-
The variable was optimized out of existence. Variables with no reads are
always optimized away, even in the interpreter. The degree to which the
compiler deletes variables will depend on the value of the compile-speed
optimization quality, but most source-level optimizations are done under all
compilation policies.
Since it is especially useful to be able to get the arguments to a function,
argument variables are treated specially when the speed optimization
quality is less than 3 and the debug quality is at least 1.
With this compilation policy, the values of argument variables are almost
always available everywhere in the function, even at unknown locations. For
non-argument variables, debug must be at least 2 for values to be
available, and even then, values are only available at known locations.
Next: 3.4.2 Note On Lexical
Up: 3.4 Variable Access
Previous: 3.4 Variable Access
Raymond Toy
Mon Jul 14 09:11:27 EDT 1997