1. A method for replaying a program, said method comprising the steps of: recording for a given execution of said program: one or more checkpoints of said program, said one or more checkpoints containing program state information; and a recorded list of values for one or more identified variables executing in one or more threads of said program; and during a replay execution of said program: commencing execution from a particular one of said recorded checkpoints; restoring said program state information associated with said particular one of said recorded checkpoints; comparing an observed list of values to said recorded list of values for said one or more identified variables executing in each of said one or more threads; and identifying a difference between said observed list of values and said recorded list of values