Conclusion

We have introduced the notion of comparative debugging for automating the debugging process for large numerical codes. Blocking and non-blocking break-points were implemented in the Wizard thus showing the feasibility of this idea.

Tests performed so far indicate that the Wizard can be used to detect a number of errors. It can also be used to compare and verify the results of a segment of code continuously through a computation. This can be done in any setting where one can generate the expected answer to be produced by the segment of code.

The main obstacle to using comparative debugging is that one must have access to two very similar programs. Although this might not be a common situation for most programmer, we believe that when this does happen, using a tool like the Wizard will be worthwhile.

The primary objective of this study has been to show that comparative debugging can be incorporated in existing debugging tools. We believe that this has been achieved. We do see some extensions that would be useful in a future more complete tool:

The current version of the program can only compare scalars. One should allow for sending of whole arrays and array-segments.

A comparative break-point inside a tight loop will generate a large number of data packages to be sent to the monitor program. This overhead will slow down the Wizard. One way this could be remedied is by specifying that data should only to be sent every n'th time a break-point is executed. The extra data could then either be packed into larger messages or discarded.

Currently we do not allow for running a program against data stored in a file.

The tolerance, epsilon, used in comparisons is the same for every break-point. It might be useful to have the option to specify an individual tolerance for each break-point.

It is our intention to make the Wizard available to other users. There is also a available about the Wizard, that will be presented at .