Nondeterminism, intended or otherwise, makes debugging message passing parallel programs a difficult task. In this paper, we present an on-the-fly debugging tool, mdb (Message-passing DeBugger), for debugging programs written for the PVM (Parallel Virtual Machine), that is effective in detecting the presence of races. mdb uses a new class of expressions, called semantic expressions, to specify races. These expressions capture the program semantics related to a receive operation and are used to detect unwanted races at run-time. mdb also has the ability to invoke sequential debuggers, making it useful in detecting errors unrelated to races as well. Replay debugging support by mdb provides for deterministic replay of erroneous executions. The current implementation of mdb works for C as well as for Fortran programs.
展开▼