The Program

To illustrate that the concept of comparative debugging is feasible we have implemented a tool called the Wizard. The Wizard lets the user run two programs simultaneously, each running inside a debugger. The Wizard makes it possible to set and execute both blocking and non-blocking breakpoints.

The Wizard is comprised of three programs, merged inside a graphical user interface. The three programs are a monitor program and two debuggers. The two debuggers are slightly modified version of the GNU debugger gdb [14]. gdb has been extended with blocking and non-blocking break-points as described in the Theory section. In this way it is possible to use all the ordinary debugging features included in gdb. The Wizard also contains a monitor program that performs the actual comparisons of data transmitted from the debuggers. This has been implemented in C. The communication between the two debuggers and the monitor program has been implemented using the PVM message-passing system [7]. The programs are assembled inside a user interface implemented using Tcl, Tk , [12, 17] and Expect [10].

View the user interface: or using .

Since the Wizard has been implemented using explicit message passing it is possible to execute the two programs to be debugged on different computers. This is advantageous if the memory requirements of the program are such that two versions cannot be executed simultaneously on the same computer or if the error only occurs on a particular computer platform.