I'm a big fan of Chronon[1] for Java. Run a program and record everything about it. Use the same eclipse debug interface as always, but also have the ability to re-wind to an earlier point. Check out the state of any variable in the code, at any time. It knows about threads, can reproduce inputs/outputs, etc.
I believe it is now integrated with intellij as well.
No connection to the product, other than the fact that I paid for it. Unfortunately it doesn't seem to be very well marketed.
From what I recall (last few months I've been away from Java), you can't modify anything and re-run it (which Elm's debugger seems to be able to do).