86

Is it possible to step backwards through executed code in a debug session?

For example I step over a method called abc() expecting to get 12 but after re-checking the value returned I notice it's 5 instead of 12. How can I step back to where I was before and step into the method to see what is going on? I know you can do this in visual studio but I can't find how to do this in intelliJ.

Software Engineer
  • 15,457
  • 7
  • 74
  • 102
Cristian Gutu
  • 1,221
  • 1
  • 11
  • 24

2 Answers2

103

You can drop the frames until you reach the point where you want to be. This isn't exactly stepping backwards, but it is quite similar in a lot of respects.

Though as the comments mention below, this will not revert the global state of your application -- which isn't a huge concern if you're developing stateless services, but could be if you're developing swing applications (if anyone actually does that any more).

On the debugger toolbar it looks like this: Drop Frame. In Idea 2016.3 the drop-frame icon changed to look like this drop frame in idea 2016.3, and since 2019.3 it changed to look like this enter image description here.

Full documentation is available here: IntelliJ Debugger Docs, and there is a StackOverflow Drop Frame Question, with a few useful answers

Software Engineer
  • 15,457
  • 7
  • 74
  • 102
4

Check out Chronon Debugger plugin which actually allows you to step back, not just drop the frame http://blog.jetbrains.com/idea/2014/03/try-chronon-debugger-with-intellij-idea-13-1-eap/

tales
  • 593
  • 2
  • 5
  • 12