Come eseguire il debug di una condizione di gara

Se stai parlando di linguaggi che compilano in bytecode, come Java, Scala, JRuby, Jython e altri (vedi Elenco dei linguaggi JVM) puoi usare la tecnologia implementata nello strumento Race Catcher™ di Thinking Software, Inc. | Application Reliability Management & Monitoring.

Race Catcher è un analizzatore di codice dinamico con un tasso di falsi positivi dello 0% e un overhead molto piccolo che ne permette l'uso in tutte le fasi del ciclo di vita del software, sviluppo, test/QA e supporto alla produzione. È disponibile per le vostre macchine locali e le vostre macchine sul cloud (AWS Marketplace - race catcher).

Questo strumento lavora su bytecode e non richiede la presenza di codice sorgente per analizzare le Race Conditions (e i Deadlock). Il codice sorgente sarà necessario solo in seguito per spiegare i problemi localizzati a un programmatore (tuttavia, la decompilazione è fornita da questo strumento nel caso dell'open source).

Una caratteristica molto specifica (oltre al tasso di falsi positivi dello 0% e al piccolo overhead) è un'interfaccia utente molto intuitiva che eliminerà la necessità di "riprodurre il problema" e, quindi, eliminare la solita tensione tra tester e programmatori. L'UI riprodurrà e rispiegherà i problemi su richiesta in qualsiasi momento durante o dopo l'esecuzione del processo target.

L'uso di questo strumento è estremamente facile:

Puoi avviare il tuo processo sostituendo "java" con "jta" (cioè "java -jar myJar.jar" diventerebbe "jta -jar myJar.jar")

Oltre puoi aggiungere il parametro "-javaagent" nello script di avvio della tua applicazione.

Disclaimer: Questa tecnologia è sviluppata nella nostra azienda, Thinking Software, Inc. Thinking Software, Inc. | Gestione e monitoraggio dell'affidabilità delle applicazioni