Scheme48 includes a debugger and an inspector.
There is a low-tech inspector available via the ,inspect and ,debug commands. The ,inspect command starts an inspector command loop. There is a focus object (the same as the command processor's ##), for which a menu of selectable components is displayed. To inspect a particular component, just type the corresponding number in the menu. For example:
,inspect '(a (b c) d) (a (b c) d)  a  (b c)  d inspect: 1 (b c)  b  c inspect:
When a new 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.
The inspector is particularly useful with procedures, continuations, and records.
Other inspector commands:
## is always the object currently being inspected. After a Q command, or an error in the inspector, ## is the last object that was being inspected.
The inspector also accepts arbitrary command processor commands, e.g. the ,dis command (see below). The leading comma is optional.
After an error occurs, ,debug invokes the inspector on the continuation at the point of the error. The U and D (up and down) commands then make the inspector 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.
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.
Ownership, Maintenance and Disclaimers
Scheme48 Manual Top Page
Envision Manual Top Page