Debugging a distributed program using the traditional debugging cycle is very difficult. First, the non-determinism inherent in distributed programs makes it hard to reproduce any problems observed in earlier runs. Secondly, it is difficult to efficiently implement data breakpoints where the breaking condition may involve variables from multiple processes. The first problem can be tackled by using a record-replay facility that can record one run of distributed program and can replay it later any number of times. However, most current debuggers for distributed programs implement data breakpoints using single stepping which is extremely inefficient. In this paper, we present an execution replay system for distributed programs with efficient support for data breakpoints. Breakpoint detection is performed offline on the recorded memory state of the program using computation slicing. This reduces the overhead of such breakpoints to the level that they can be extensively used while debugging a distributed program.