2010-04-11 9 views
15

Microsoft a récemment annoncé "Intellitrace", une fonctionnalité tueur pour VS2010 IMHO. Fondamentalement, il enregistre certaines des instructions exécutées par le programme (en particulier les appels de fonction) et vous permet de parcourir facilement le journal d'exécution.Open source alternative pour "Intellitrace"

Existe-t-il une fonctionnalité similaire pour les outils open source? Plus précisément, une telle fonctionnalité pour Java avec intégration Eclipse serait une bonne chose à avoir.

+0

ne IntelliTrace fonctionne avec l'application multi-thread? Permettre de rejouer chaque instruction dans le temps, y compris sur plusieurs threads? Si c'est possible, c'est vraiment énorme. Si ce n'est pas possible, c'est juste un débogueur de voyage dans le temps. – SyntaxT3rr0r

+2

N'a pas encore testé, mais http://msdn.microsoft.com/en-us/magazine/ee336126.aspx dit: "La page de résumé me donne beaucoup d'informations sur ce que contient le fichier IntelliTrace. de la page, on me donne une vue chronologique des discussions dans l'application. ". Je vous le dis, MS retrouverait son monopole par la qualité de cisaillement de ses produits. Les développeurs vont s'éloigner de Java, en C#, ce qui attirerait naturellement les clients vers WinMo7, dessiner des serveurs vers IIS, etc. –

+0

@WizardOfOdds et BTW, y a-t-il un framework de débogage temporel mature pour Java? –

Répondre

8

Je suis partial bien sûr, mais vous pouvez regarder Chronon

+0

Chronon est utile, mais il n'est pas open source, et il n'est même pas gratuit pour les projets open source! –

+3

Chronon est maintenant gratuit pour les projets open source: http://eblog.chrononsystems.com/chronon-free-for-open-source-projects – pdeva

5

gdb 7.0 dispose d'un similar feature appelé ProcessRecord. Il manque cependant le gui.

Il permet des choses comme:

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 
4

Cela est parfois appelé « le débogage du temps de voyage », car il vous donne la possibilité de « retour dans le temps » et de vérifier l'état de votre programme. Une recherche rapide google montre this talk sur le support d'éclipse pour quelque chose de similaire (de retour en 2006 apparemment!).

EDIT:

Comme Elazar a souligné dans les commentaires, cet outil d'éclipse est pour le développement basé sur C, pas java. Cependant, il semble que Omniscient Debugger est un débogueur temporel pour Java. On dirait que c'est un peu un projet mort, ce qui est un peu surprenant.

+0

Malheureusement, ce n'est que pour CDT, ce qui signifie qu'il n'y a pas de support Java. Est-ce basé sur la fonction d'enregistrement 'gdb' que j'ai mentionnée? –

+0

Le lien eclipsecon.org est cassé. –

+0

Malheureusement, j'étais [incapable de faire fonctionner Omniscient Debugger du tout] (http://stackoverflow.com/questions/9686946/how-to-use-omniscient-debugger) sur Java 6. –

2

Vous pouvez toujours le pirater vous-même en utilisant des frameworks AOP tels que AspectJ - La journalisation est l'un des aspects les plus souvent mentionnés.

+0

Est-il facile d'ajouter une fonctionnalité similaire à une base de code existante? –

+0

Cela devrait être facile, mais consultez le manuel AspectJ. –