  In message passing programs, once a process terminates with an unexpected
error, the terminated process can propagate the error to the rest of processes
through communication dependencies, resulting in a program failure. Therefore,
to locate faults, developers must identify the group of processes involved in
the original error and faulty processes that activate faults. This paper
presents a novel debugging tool, named MPI-PreDebugger (MPI-PD), for localizing
faulty processes in message passing programs. MPI-PD automatically
distinguishes the original and the propagated errors by checking communication
errors during program execution. If MPI-PD observes any communication errors,
it backtraces communication dependencies and points out potential faulty
processes in a timeline view. We also introduce three case studies, in which
MPI-PD has been shown to play the key role in their debugging. From these
studies, we believe that MPI-PD helps developers to locate faults and allows
them to concentrate in correcting their programs.
