Lazy SETL debugging with persistent data structures

Zhiqing Liu · 1995

This thesis describes the lazy debugging, a new debugging approach that aims at solving two major problems experienced in using current program debuggers: the need for repeated execution, and the difficulty in examining large amounts of trace information. The lazy debugging approach separates program debugging from other related tasks by postponing examination of trace information until the complete record of an execution is available in such a way that users can easily go back to any moment in the execution and examine the data objects available at that moment. This is done by using a persistent runtime system and persistent data structures which can record execution information efficiently. The thesis describes LSD, our visual debugging system implemented for the SETL programming language. After giving a full account of the debugger, we focus on the design and implementation of its three major components: the SETL persistent runtime system, a graphical user interface, and the system's set of debugging routines. We discuss the data representations of the persistent runtime system and several of its key design trade-offs, including time overhead versus space overhead considerations, and time and space overhead versus completeness of execution information. We present several techniques developed for building powerful visual debugging user interface, including hypertext structured execution information presentations, support for incremental debugging, and program animation. We describe ways in which conventional debugging facilities can be simulated using the LSD graphical user interface. We describe experiments showing that the performance overhead of the persistent runtime system is acceptable, and that the graphical user interface improves debugging efficiency. The thesis also discusses some system limitations and possible solutions, within the lazy debugging paradigm and the current design of LSD.

Read the paper · More papers on PaperTik