Pregunta

Me preguntaba si hay algún marco o aplicación (APP) / Programa que puede analizar la concurrencia de cualquier código Java?

Si la herramienta conoce todas las implementaciones de las clases y métodos enviados de JRE, se reduce a un simple análisis de bloques y métodos sincronizados y sus jerarquías de llamadas.Desde aquí puede crear una red de Petri y decirle seguro si alguna vez podría experimentar un punto muerto.

¿Estoy perdiendo algo o es esto realmente tan fácil?¿Entonces debe haber alguna herramienta fresca haciendo ese tipo de cosas?¿O es un informe de este tipo de herramienta demasiadas puntos muertos posibles que se guardan completamente debido a algún programa subyacente / lógica de negocios?¿Las redes de Petri deben ser lo suficientemente poderosas para manejar estas situaciones?

Esto guardaría tantas horas de búsqueda de búsqueda de errores que podrían o no estar relacionados con problemas de bloqueo muertos.

¿Fue útil?

Solución

Aunque (muchos) se pueden encontrar errores relacionados con la concurrencia utilizando el análisis de código estático, no se aplica a cada tipo de error.Algunos errores solo aparecen en tiempo de ejecución bajo ciertas condiciones.

IBM tiene una herramienta llamada concurso que " Horarios La ejecución de los subprocesos del programa de tales que los escenarios del programa que probablemente contengan condiciones de carrera, puntos muertos y otros errores intermitentes (llamados colectivamente problemas de sincronización) se ven obligados a aparecer con una alta frecuencia ".

Esto requiere pruebas de funcionamiento (unidad) contra una versión instrumentada de su aplicación.Más información de fondo en este Artículo de desarrolladores .

Otros consejos

Este papel describe una herramienta que realiza un análisis estático deUna biblioteca y determina si el punto muerto es posible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top