There is a data inspector available via the ,inspect
and
,debug
commands or by setting the inspect-focus-value
switch.
The inspector is particularly useful with procedures, continuations,
and records.
The command processor can be taken out of inspection mode by
using the q
command, by unsetting the inspect-focus-value
switch,
or by going to a command level where the inspect-focus-value
is not
set.
When in inspection mode, input that begins with
a letter or digit is read as a command, not as an expression.
To see the value of a variable or number, do (begin
or use the exp
),run
command.
exp
In inspection mode the command processor prints out a menu of selectable components for the current focus object. To inspect a particular component, just type the corresponding number in the menu. That component becomes the new focus object. For example:
> ,inspect '(a (b c) d) (a (b c) d) [0] a [1] (b c) [2] d : 1 (b c) [0] b [1] c :
When a new focus object is selected the previous one is pushed onto a
stack.
You can pop the stack, reverting to the previous object, with
the u
command, or use the stack
command to move to
an earlier object.
Commands useful when in inspection mode:
u
(up) pop object stack
m
(more) print more of a long menu
(...)
evaluate a form and select result
q
quit
template
select a closure or continuation's template
(Templates are the static components of procedures; these are found
inside of procedures and continuations, and contain the quoted
constants and top-level variables referred to by byte-compiled code.)
d
(down) move to the next continuation
(current object must be a continuation)
menu
print the selection menu for the focus object
Multiple selection commands (u
, d
, and menu indexes)
may be put on a single line.
All ordinary commands are available when in inspection mode. Similarly, the inspection commands can be used when not in inspection mode. For example:
> (list 'a '(b c) 'd) '(a (b c) d) > ,1 '(b c) > ,menu [0] b [1] c >
If the current command level was initiated because of
a breakpoint in the next level down, then
,debug
will invoke the inspector on the
continuation at the point of the error.
The u
and d
(up and down)
commands then make the inspected-value stack look like a conventional stack
debugger, with continuations playing the role of stack frames. D
goes
to older or deeper continuations (frames), and u
goes back up to more
recent ones.
Previous: Switches | Next: Command programs