Hacker News new | ask | show | jobs
by matsemann 1742 days ago
Not exactly similar, but in IntelliJ/java one can drop the current frame in the debugger. This jumps one step up in the stack, and allows you to enter the function fresh. Can drop arbitrary many stacks to go backwards.

Of course, it doesn't rollback the heap or any shared state. And playing forward again it will redo things again. So beware of side effects. But in codebases with lots of immutable data structures (Kotlin ftw) it works great.

Combined with hot swapping, one can even drop the frame, change the implementation of the function and then reenter, making it possible to test code changes without spending long time getting back into the same state/context.

1 comments

Wow! Thank you so much for this comment. I have been using IntelliJ for over 10 years and I never knew this feature existed, I just gave it a try and it's incredibly useful.

One thing I wish Java debuggers supported was the ability to move the instruction pointer to a different line, as has been possible in other debuggers for ages. Is it a JVM limitation maybe? I remember being able to drag the "current line" pointer forwards or backwards in languages like C, C++, and C# in maybe 2003. I wish I could do this with Java; dropping the whole frame is useful but this feature lets you do a lot more, like break out of a loop or skip a block of code you _just_ realized shouldn't execute.

Never heard of that functionality, but googling brings up this https://blog.jetbrains.com/idea/2020/08/jump-to-any-line-whi...

> if you want to jump to a particular line and set an execution point there, without executing the preceding code

> I remember being able to drag the "current line" pointer forwards or backwards in languages like C, C++, and C# in maybe 2003

This is because Visual Studio debugger was always state of the art.

> This is because Visual Studio debugger was always state of the art.

AFAICR Borland's IDEs had that before the turn of the century.