Abstraction and Visualization in Graphical Debuggers (Thesis)

Report ID: TR-608-99
Author: Korn, Jeffrey L.
Date: 1999-10-00
Pages: 138
Download Formats: |Postscript|
Abstract:

As computer systems become increasingly pervasive, the size and complexity of software grows. An inevitable consequence of such growth is the presence of software errors, for which half of development time is spent correcting. Debuggers facilitate tracking and correcting errors by increasing the visibility of a program. This thesis examines how debuggers can be constructed that enhance visibility of software by presenting programs at a higher level of abstraction. In particular, we describe the construction of three systems. The first system, Deet, addresses problems that arise in the implementation of graphical debuggers. It focuses on aspects of portability, language-independence and complexity. Deet works with a variety of operating systems, languages and architectures by separating machine-dependent pieces of the debugger into a minimal component called a nub. The second system, Chava, provides visualization of object code and can display relationships such as class inheritance diagrams, call graphs, and module dependencies. Chava also supports comparison between two versions of a program, and is useful for reverse engineering applications. The third system, TraVis, provides visualization of program data in the debugger. TraVis draws data structures using a technique called traversal-based visualization, in which the user defines how in-core objects are turned into on-screen entities as they are traversed by the debugger. The mappings make it possible to display data at a higher semantic level without modification of source code.