LiveRecorder allows developers to record, replay, and reverse debug Java applications. LiveRecorder is the company’s flagship product, but up until this beta it only supported C/C++ applications. “Obviously C++ is a big market, but it’s relatively niche. Java is much larger and gets particularly in that application space, so we’re very excited to have an offering in that space,” Greg Law, co-founder and CTO of Undo told SD Times.
LiveRecorder works by capturing non-deterministic data, such as user input, while a program runs, then uses that data later to recreate the application’s memory and register state. The result is a reproducible test case that can be used for debugging purposes.
“There’s actually research papers on this kind of thing going back to the 1970s, but until Undo, none of the attempts at implementing it were practical for any kind of real world complex code. We take a different approach to it and essentially what we do is we cheat, we capture just what the relatively small amounts of info that we need such that we can compute any prior state,” said Law.
Law explained that LiveRecorder is easy to turn on and off, so developers don’t have to keep it running and recording constantly. “In practice how people use this is they don’t leave it running all the time, always recording. What they do is when there’s a problem, they’ll turn the recording on, and it’s quite easy to switch recording on and off again. It gets deployed a lot in test and continuous integration-type environments,” Law said.
Other features of LiveRecorder include thread fuzzing, log jumping, post failure logging, multi-process correlation, and integration with APIs, CLI, and front-end and container platform integrations.
LiveRecorder for Java is currently available in beta, and Undo expects to release it fully by July.