A significant amount of software development is evolutionary, involvin
g the modification of already existing programs. To a large extent, th
e modified programs produce the same results as the original program.
This similarity between the original program and the development progr
am Is utilized by relative debugging. Relative debugging is a new conc
ept that enables the user to compare the execution of two programs by
specifying the expected correspondences between their states. A relati
ve debugger concurrently executes the programs, verifies the correspon
dences, and reports any differences found. We describe our novel debug
ger, called Guard, and its relative debugging capabilities. Guard Is i
mplemented by using our library of debugging routines, called Dynascop
e, which provides debugging primitives in heterogeneous networked envi
ronments. To demonstrate the capacity of Guard for debugging in hetero
geneous environments, we describe an experiment in which the execution
of two programs is compared across Internet The programs are written
in different programming languages and executing on different computin
g platforms. (C) 1997 by John Wiley & Sons, Ltd.