1. Introduction
Debugging a parallel program is often very difficult due to number of involved processes and the relations between them. To support users during debugging, several techniques and many debugging tools [1], [3], [17] have been developed. A traditional approach is cyclic debugging, where a program is re-executed several times to obtain more information about its execution and ultimately to detect the original reasons of bugs. Unfortunately, cyclic debugging of parallel programs is restricted by nondeterminism, where different program results are observed with the same input data. A solution is provided by record&replay techniques [7], [8], [10], which can be incorporated in cyclic debugging tools to enforce equivalent re-execution of parallel programs. A drawback of these techniques is that the waiting time may be rather long if the program is re-executed every time from its initial state. This situation is not acceptable, since debugging is an interactive, user-centered approach, and users expect immediate response when applying debugging operations [12].