2010-04-11 3 views
15

Microsoft ha recentemente annunciato "Intellitrace", una funzionalità killer per VS2010 IMHO.Alternativa open source per "Intellitrace"

In pratica, registra alcune delle istruzioni eseguite dal programma (in particolare chiamate di funzione) e consente di esaminare facilmente il registro di esecuzione.

Esiste una funzionalità simile per gli strumenti open source? In particolare, una funzionalità simile per Java con l'integrazione di Eclipse sarebbe una buona cosa.

+0

non Intellitrace funziona con App multi-threaded? Permettere di riprodurre ogni singola istruzione avanti e indietro nel tempo, anche attraverso più thread? Se può, questa è davvero una roba enorme. Se non può, è solo un altro debugger di viaggi nel tempo. – SyntaxT3rr0r

+2

Non ancora testato, ma http://msdn.microsoft.com/en-us/magazine/ee336126.aspx dice: "La pagina di riepilogo mi fornisce molte informazioni su cosa contiene il file IntelliTrace. della pagina, mi viene data una visualizzazione cronologica dei thread nell'applicazione. ". Sto dicendo che, MS riacquisterà il suo monopolio dalla qualità di taglio dei loro prodotti. Gli sviluppatori si affolleranno da Java, a C#, che naturalmente attirerà i clienti su WinMo7, attirerà i server su IIS, ecc. –

+0

@WizardOfOdds e BTW, esiste un framework per il debugger di viaggi nel tempo maturo per Java? –

risposta

8

io sono di parte, naturalmente, ma si consiglia di guardare Chronon

+0

Chronon è utile, ma non è open source, né è nemmeno gratuito per progetti open source! –

+3

Chronon è ora gratuito per progetti open source: http://eblog.chrononsystems.com/chronon-free-for-open-source-projects – pdeva

5

gdb 7.0 dispone di un similar feature chiamato ProcessRecord. Manca però il gui.

Esso permette cose come:

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

Questo è talvolta chiamato 'tempo di percorrenza di debug', perché ti dà la possibilità di 'passo indietro nel tempo' e verificare lo stato del vostro programma. Una rapida ricerca su google mostra this talk sul supporto di eclipse per qualcosa di simile (dal lontano apparentemente nel 2006!).

EDIT:

Come Elazar sottolineato nei commenti, che strumento di Eclipse è per lo sviluppo C-based, non Java. Tuttavia, sembra che Omniscient Debugger sia un debugger temporale per Java. Sembra un po 'un progetto morto, il che è un po' sorprendente.

+0

Purtroppo è solo per CDT, il che significa nessun supporto Java. Si basa sulla funzione di registrazione di 'gdb' che ho menzionato? –

+0

Il collegamento eclipsecon.org è rotto. –

+0

Sfortunatamente ero [impossibilitato a far funzionare Omniscient Debugger] (http://stackoverflow.com/questions/9686946/how-to-use-omniscient-debugger) su Java 6. –

2

Puoi sempre modificarlo autonomamente utilizzando framework AOP come AspectJ - La registrazione è uno degli aspetti più comunemente citati.

+0

Quanto è facile aggiungere una funzionalità simile alla base di codice esistente? –

+0

Dovrebbe essere facile, ma consultare il manuale di AspectJ. –