supporting reverse execution for parallel programs
Parallel programs are difficult to debug because they run for a, long time and two executions may yield different results. Reverse execution , is a simple and powerful concept that solves both these problems. We are designing a tool for debugging parallel programs, called Recap, that provides the illusion of reverse execution using checkpoints and event recording and playback. During normal execution, Recap logs the results of system calls and shared memory reads: as well as the times that asynchronous events (signals) occur. Recap periodically checkpoints the state of a process by forking and suspending a new process. To reverse execute to a certain point in time, Recap continues the nearest checkpoint process forward in a self-contained environment, simulating all events using the log. We are implementing Recap as part of a larger environment for parallel program development.
parallel programming program debugging timing yield concept tool checkpoint point event records normalization log systems shared memory asynchronicity signaling process forward environments developer