Abstract
The Microsoft .NET Framework represents a major advance over previous runtime
environments available for Windows platforms and offers a number of architectural
features that would be of value in scientific programs. However there are such
major differences between.NET and legacy environments under both Windows and
Unix, that the effort of migrating software is substantial. Accordingly, software
migration is unlikely to occur unless tools are developed for supporting this
process. In this paper we discuss a ‘relative debugger’ called Guard
which provides powerful support for debugging programs as they are ported from
one environment or platform to another. We describe a prototype implementation
developed for Microsoft’s Visual Studio.NET - a rich interactive environment
that supports code development for the .NET Framework. The paper discusses the
overall architecture of Guard under VS.NET and highlights some of the technical
challenges that were encountered during its development. A simple case study
is provided that demonstrates the effectiveness of relative debugging in locating
subtle errors that occur when even a minor upgrade is attempted from one version
of a language to another. For this example, we illustrate the use of relative
debugging using a Visual Basic program that was ported from Visual Basic 6.0
to Visual Basic .NET.