Other (research) frameworks I've seen before
actually allow you to step *backward* in execution
time in order to track down how you got to the
invalid state in the first place. Granted this is
computationally expensive but if we have such
options in Netbeans (optionally enabled) then we
could save *a lot* of time debugging. Instead of
repeating the "run, breakpoint, debug" cycle 10-20
times before you track down a bug you could run it
once and if the problem occured a few lines before
the breakpoint you can track down exactly why
things went wrong.
This would give us a huge benefit over Eclipse
and all other competitors!
*** Issue 38764 has been marked as a duplicate of this issue. ***
Aparently someone has already beat us to it:
Omicore is a production Java IDE that supports "back-in-time
debugging". I hope you guys will consider this for Netbeans 4.x
I think this is a killer feature for developers; the question is how
hard it is to implement.
True step back would be an overkill IMHO, since we would have to remember all
changes in the heap.
I've downloaded X-develop to see how it works there. They are not changing heap
during step back. Only local variables. Therefore one needs to continually
remember all changes in local variables. This would be almost impossible to do
with JDI, since one would need to stop the debuggee on every variable change and
inspect and remember it's value. That would make debugging almost unusable from
the performance point of view.
X-develop seems to be using JDWP. So this needs to be more deeply explored how
they are doing this...
*** Issue 69557 has been marked as a duplicate of this issue. ***
As described in issue #69557 - there is a GPLed implementation which actually
Visual Studio 2010 has this feature. I think everyone pretty much agrees that this is a killer feature but that it's not clear how to implement it with a reasonable performance. Microsoft found a way to do it somehow so it must be possible.
It's been 6 years since this request was filed. Please revisit it and find out if anything has changed since then.
Chronon's authors claim they have managed to implement this with no noticeable performance drop (versus uninstrumented code): http://java.dzone.com/articles/introducing-chronon-time
At the very least, this indicates the concept is feasible.
9 years later, it's time to re-evaluate this issue. At the very least, someone should look into how Chronon does it.
Take a look at http://chrononsystems.com/what-is-chronon/technology and http://chrononsystems.com/what-is-chronon/performance
Chronon, Visual Studio 2010 and the aforementioned GPL implementation show that numerous people have implemented this feature and without a huge performance impact.
So, what is preventing you from implementing this feature? Lack of demand? Or is it something else?
Hey! Oracle just integrated JRockit "Flight Recorder" into JDK 7 update 40. According to the docs this will allow you to step back in time using minimal overhead.
Now that this is an officially-supported feature in the JDK, can Netbeans finally add support?
I'd really like to add this feature, if the Flight Recorder supports it.
I've read through the documentation at http://docs.oracle.com/cd/E15289_01/doc.40/e15070.pdf specifically the C - Events chapter and I did not find anything about logging of the actual execution, variable values, etc. All what I see are general properties of the execution, GC, threads, etc.
It looks unusable for the debugger to me.
That's too bad.
Is there a reasonable way to implement this feature in 2014? Or would the performance be too poor?