* Faculty       * Staff       * Students & Alumni       * Committees       * Contact       * Institute Directory
* Undergraduate Program       * Graduate Program       * Courses       * Institute Catalog      
* Undergraduate       * Graduate       * Institute Admissions: Undergraduate | Graduate      
* Colloquia       * Seminars       * News       * Events       * Institute Events      
* Overview       * Lab Manual       * Institute Computing      
No Menu Selected

* Research

Ph.D. Theses

Restoring Semantic Context: A Domain-Aware Debugger

By Roderic G. Collins
Advisor: Charles V. Stewart
May 4, 2004

Debugging a computer program requires comparing the actual behavior of the program with the expected behavior. These two models of behavior, the actual and the expected, exist in very different semantic contexts. The context of the expected behavior is that of the program's end-user domain, expressed in the argot of the end-user's particular specialized field of knowledge. The context of the actual behavior is that of physical computer hardware operating under the direction of a computer program, expressed in the syntax, semantics, and tool-sets of the programming language used to create that program. Typically the first context is concise, containing semantically rich tokens with ambiguous interpretations, while the second is extremely verbose, containing semantically barren tokens with unambiguous interpretations.

Moving from the first context to the second is the process of implementation, in which successively more verbose models are more-or-less hand-crafted until a model, for example source code, is obtained which can be automatically translated into executable object code. To debug this final model, however, reference must be made to the prior intermediate models, for in all except the most trivial of errors, it was somewhere along that chain of transformations that the error occurred. The ultimate manipulation and comparison of these models is done manually, since by definition these intermediate models do not exist in a form directly amenable to automatic computation.

In this work, we demonstrate how to isolate one of these intermediate models in such a way that the manipulation and comparison of semantic contexts central to the debugging process can take place at a much higher level of abstraction than that usually afforded by debugging software. We extend the traditional concept of a debugger breakpoint into a semantic breakpoint, expressed in the semantic tokens of the domain model instead of source code. Using the semantic domain of wire frame topology as an example, we develop an application-independent model of the domain which supports semantic state descriptions. We then show that diverse target applications can be adapted to this model at a per-target cost roughly equivalent to pretty-printing the target's data structures; this mapping allows the domain model to evolve to mirror the state of the target as it runs. The domain model presents the state of the target in several ways which can be arbitrarily combined to filter large datasets; this allows semantic breakpoints to be combined with other aspects of program execution such as function call stacks. Examples are shown with targets from computer vision and finite mesh analysis; extension into other semantic domains is discussed.

* Return to main PhD Theses page