A portable debugger for parallel and distributed programs

We describe the design and implementation of a portable debugger for parallel and distributed programs. The design incorporates a client server model in order to isolate nonportable debugger code from the user interface. The precise definition of a protocol for client server interaction facilitates a high degree of client portability. Replication of server components permits the implementation of a debugger for distributed computations. Portability across message passing implementations is achieved with a protocol that specifies the interaction between a message passing library and the debugger. This permits the same debugger to be used both on PVM and MPI programs. The process abstractions used for debugging message passing programs can be adapted to debug HPF programs at the source level. This permits the meaningful display of information obscured in tool generated code.<<ETX>>