1. A method for analyzing a computer program running on a first virtual machine, the method comprising: initiating a replay platform; accessing a log comprising non-deterministic events in the instruction stream of the first virtual machine and read data corresponding to read requests from a virtual processor of the first virtual machine to at least one emulated device of the first virtual machine; replaying the instruction stream of the first virtual machine on the replay platform using the log; and executing program analysis code on the replay platform during the replay.