steps toward better debugging tools for lisp
Although contemporary Lisp systems are renown for their excellent debugging facilities, better debugging tools are still urgently needed. A basic flaw with the tools found in most implementations is that they are oriented towards inspection of specific pieces of program or data. and they offer little help in the process of localizing bugs within a large body of code. Among conventional tools, a stepper is the best aid for visualizing the operation of a procedure in such a way that a bug can be found without prior knowledge of its location. But steppers have not been popular, largely because they are often too verbose and difficult to control. In this paper, we present a new stepper for Lisp, Zstep. which integrates a stepper with a real-time full-screen text editor to display programs and data. Zstep presents evaluation of a Lisp expression by visually replacing the expression by its value, conforming to an intuitive model of evaluation as a substitution process. The control structure of Zstep allows a user to zoom in on a bug. examining the program first at a very coarse level of detail, then at increasingly finer level until the bug is located. Zstep keeps a history of evaluations, and can be run either forward or backward. Zstep borrows several techniques from the author's example-oriented programming environment. Tinker. including a novel approach to handling error conditions.
debugging bugs tools lisp systems implementation inspection program data help process code visualization knowledge locatability control paper real-time text evaluation value express model structure user level of detail histories forward author programming environment errors examples