Scheme 48 Manual -- Debugging commands

Scheme 48 Manual | Contents | In Chapter: Command processor
Previous: Module commands | Next: Switches

## Debugging commands

  `,preview`
  Somewhat like a backtrace, but because of tail recursion you see less than you might in debuggers for some other languages. The stack to display is chosen as follows:
  1. If the current focus object is a continuation or a thread, then that continuation or thread's stack is displayed.
  2. Otherwise, if the current command level was initiated because of a breakpoint in the next level down, then the stack at that breakpoint is displayed.
  3. Otherwise, there is no stack to display and a message is printed to that effect.
  One line is printed out for each continuation on the chosen stack, going from top to bottom.

  `,run `exp``
  Evaluate `exp`, printing the result(s) and making them (or a list of them, if `exp` returns multiple results) the new focus object. The `,run` command is useful when writing command programs.

  `,trace `name` ...`
  Start tracing calls to the named procedure or procedures. With no arguments, displays all procedures currently traced. This affects the binding of `name`, not the behavior of the procedure that is its current value. `Name` is redefined to be a procedure that prints a message, calls the original value of `name`, prints another message, and finally passes along the value(s) returned by the original procedure.

  `,untrace `name` ...`
  Stop tracing calls to the named procedure or procedures. With no argument, stop tracing all calls to all procedures.

  `,condition`
  The `,condition` command displays the condition object describing the error or interrupt that initiated the current command level. The condition object becomes the current focus value. This is particularly useful in conjunction with the inspector. For example, if a procedure is passed the wrong number of arguments, do `,condition` followed by `,inspect` to inspect the procedure and its arguments.

  `,bound? `name``
  Display the binding of `name`, if there is one, and otherwise prints ``Not bound`'.

  `,expand `form``
  `,expand-all `form``
  Show macro expansion of `form`, if any. `,expand` performs a single macro expansion while `,expand-all` fully expands all macros in `form`.

  `,where `procedure``
  Display name of file containing `procedure`'s source code.

Previous: Module commands | Next: Switches