Linking Specification, Abstraction, and Debugging

Designing and implementing a visual debugger for distributed programs is a significant challenge. Data about executing programs must be gathered and collated without unduly modifying the behaviour of the program under study. The data must be displayed in ways that are understandable to the user. One aspect of this problem is that human users are easily overwhelmed by huge amounts of detail, so the debugger must be capable of providing a variety of displays, ranging from high-level views of the entire execution to low-level views of primitive events. If the debugger is to be used interactively, all this must happen fairly quickly. This paper discusses the basic theoretical issues involved in the design of visual debuggers for distributed programs and then describes the practical issues involved in the implementation of such debuggers, including a brief description of a prototype implementation.