Frage

Ich habe mich gefragt, ob es irgendein Framework oder Anwendung (App) / Programm gibt, das die Parallelität eines Java-Codes analysieren kann?

Wenn das Tool alle Implementierungen der JRE-Shipping-Klassen und -methoden kennt, kommt es auf eine einfache Analyse synchronisierter Blöcke und -methoden und deren Anrufhierarchien.Von hier aus kann es ein Petri-Netz erstellen und Sie sicher sagen, ob Sie jemals einen Deadlock erleben könnten.

Ich vermisse mich auf etwas oder ist das wirklich so einfach?Dann muss es ein kühles Werkzeug geben, das diese Art von Zeug tut?Oder würde ein solches Werkzeug zu viele mögliche Deadlocks berichten, die aufgrund eines bestimmten zugrunde liegenden Programms / Geschäftslogiks vollständig sparen?Petrischetze sollten leistungsstark genug sein, um diese Situationen zu handhaben?

Dies würde so viele mann stundenlang suchen, um nach fehler zu suchen, die möglicherweise mit toten Verriegelungsfragen zusammenhängen oder nicht.

War es hilfreich?

Lösung

Obwohl (viele) Concurrency-Bugs mithilfe der statischen Code-Analyse gefunden werden können, gilt es nicht für jeden Fehlertyp.Einige Fehler erscheinen nur unter bestimmten Bedingungen zur Laufzeit.

ibm verfügt über ein Werkzeug namens Wettbewerb das " Zeitpläne Die Ausführung von Programmgewinde, so dass Programmszenarien, die wahrscheinlich Rennbedingungen, Deadlocks und andere intermittierende Fehler enthalten, (sammeln genannt Synchronisationsprobleme) mit hoher Frequenz auftreten ".

Dies erfordert laufende (Einheit) -tests gegen eine instrumentierte Version Ihrer App.Weitere Informationen Info in diesem EntwicklerWorks Artikel .

Andere Tipps

Dieses Papier beschreibt ein Werkzeug, das statische Analyse von erfüllteine Bibliothek und bestimmt, ob Deadlock möglich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top