Review: UndoDB, a reversible debugger
blog.jwhitham.org
blog.jwhitham.org
I've used the first (the Omniscient Debugger) quite a few times. It has a query language that allows you to query for events throughout the duration of the program (e.g. 'x is assigned a value > 1 while y < 10'). Unfortunately, it can only record a few seconds of the program (it uses a cyclical in-memory buffer). The other debuggers supposedly record to disk and can record longer durations.
I'm actually interested in adding something like this to Cursive for Clojure code - I'd be interested to see whether immutability results in smaller trace captures. I suspect Clojure would make up for that with much deeper function call stacks. Datomic could be a nice interface for querying the events, too.
[0] The oft sited string allocations per keystroke: https://groups.google.com/a/chromium.org/forum/#!msg/chromiu...
[Disclaimer: i work for Undo.]