Visualizing Program Variable Data for Debugging

Date of Award


Document Type


Degree Name

Doctor of Philosophy (Ph.D.)

Institution Granting Degree

The Ohio State University

Cedarville University School or Department

Engineering and Computer Science

First Advisor

Wayne E. Carlson


Debugging is an iterative process of removing errors from computer programs. Although debugging is one of the oldest activities in computer science, experience in debugging has grown slowly. The sluggish advance in debugging methods is a result of a lack of tools to support high-level debugging. This forces programmers to rely on manual methods, chiefly printed output, to locate and understand program errors. In order to improve this situation, researchers are examining ways to improve the debugger's ability to control the program's execution and to display the program's state information abstractly.

Another factor exacerbating the debugging problem is the frenzied environment in which debugging occurs. Bugs are flagrant reminders of the program's (and programmer's) imperfections. As such, there is often a sense of urgency that the bugs be removed quickly. Concern for the rapid removal of bugs has led many authors to advise programmers to build mechanisms into their programs, including "print" procedures for difficult data structures, to support the gathering and display of debugging information.

This dissertation is a report on our research to visualize debugger data in the software development environment described above. This research is supported by the Data Visualizer (DV), our extension to the UNIX operating system's xdbx debugger. With DV, programmers are given new control for describing what information in the selected variables is interesting and how this information should be presented. Special emphasis is given to the problem of displaying debugging data for graphically-oriented programs. This research also introduces an original classification for the common types of elementary data fields occurring in linked data structures. This classification paves the way for DV to display many familiar linked data structures as single abstract objects. Furthermore, DV integrates the programmer's pre-defined "print" procedures with its own data selection mechanisms, making DV unique among debuggers in its ability to incorporate traditional variable state selection with pro-active debugging techniques.