next up previous contents
Next: Top Level and Up: Changes to System Previous: Changes to System

Debugging and Evaluation

  The error handling in XLISP-STAT is now based on the Common Lisp condition system. When debugging is turned on, an error enters a break loop. The break loop presents a list of the available restarts, and the function continue  can be used to select a restart:

Error: illegal zero argument
Break level 2.
To continue, type (continue n), where n is an option number:
 0: Return to break level 1.
 1: Return to Lisp Toplevel.
2>
When debugging is not turned on, an indication of the function in which the error occurred is printed before the system returns to the top level:
Error: illegal zero argument
Happened in: #<Subr-/: #c49e20>
>

The baktrace  function now accepts a second optional argument that determines whether it prints function arguments or not. Supplying nil as this argument suppresses argument printing. The default value for this argument is the value of the special variable *baktrace-print-arguments* .

The back trace does not show entries for byte compiled functions or internal functions called from byte compiled code.

The old step  function has been replaced by a new one from the the stepper file included in XLISP-PLUS 2.1g . Detailed documentation for this new step  is given in Appendix A. The Macintosh version of step  no longer has a dialog interface.

The action taken in response to a user interrupt is now customizable. If the value of the special variable *interrupt-action*  is nil , interrupts are ignored. Otherwise, the value should be a function of no arguments that is called in response to an interrupt. The default value is the top-level  function that returns to the top level.

Debugging may be affected by the handling of macros. If the special variable *displace-macros*  is non- nil , then macros are spliced into the code after they are expanded. This means macros are only expanded once and can significantly improve speed of interpreted code. But it may make code used in stepping less readable, so it may be useful to set this variable to nil during debugging.

XLISP can now be more strict in checking for keywords. If *strict-keywords*  is non- nil , then specifying keyword arguments not defined for a function signals an error unless the function is defined using &allow-other-keysallow-other-keys or the keyword arguments include :allow-other-keys  with a non- nil value. If the value of *strict-keywords*  is nil , then unmatched keywords are always ignored. For now, this is the default setting.

Some graphical control over the system option variables, choosing restarts, etc. is clearly needed.


next up previous contents
Next: Top Level and Up: Changes to System Previous: Changes to System



Luke Tierney
Wed Feb 26 05:25:18 CST 1997