views:

439

answers:

3

Microsoft has recently announced "Intellitrace", a killer feature for VS2010 IMHO.

Basically it records some of the instructions the program ran (specifically function calls), and allows you to easily look through the execution log.

Is there a similar feature for open source tools? Specifically such a feature for Java with Eclipse integration would be a nice thing to have.

+2  A: 

gdb 7.0 features a similar feature called ProcessRecord. It lacks the gui though.

It allows things like:

Program received signal SIGSEGV, Segmentation fault.
0x00401150 in main () at try.c:3
3       printf("%d\n",*x);
(gdb) p x
$1 = 0x0
(gdb) watch x
Watchpoint 1: x
(gdb) reverse-continue
#...find out who was the last one to touch x
Elazar Leibovich
+1  A: 

This is sometimes called 'Time travelling debugging', because it gives you the ability to 'step back in time' and check out the state of your program. A quick google search turns up this talk about eclipse support for something similar (from back in 2006 apparently!).

EDIT:

As Elazar pointed out in the comments, that eclipse tool is for C-based development, not java. However, it looks like Omniscient Debugger is a temporal debugger for Java. Seems like a bit of a dead project though, which is a bit surprising.

Pete Hodgson
It's just for CDT unfortunately, which means no Java support. Is it based on the `gdb` Record feature I mentioned?
Elazar Leibovich
A: 

You can always hack it yourself using AOP frameworks such as AspectJ - Logging is one of the most commonly mentioned aspects.

Little Bobby Tables
How easy adding a similar functionality to existing codebase is?
Elazar Leibovich
It should be easy, but do consult the AspectJ manual.
Little Bobby Tables