java - try - Manejo automatizado de excepciones
todas las excepciones en java (4)
No estoy seguro de si esto es viable en un entorno de producción, pero está el depurador Omniscient:
¿Qué pasa si su depurador puede ir "retroceder en el tiempo"? ¿Eso haría que la depuración sea más fácil? Simplemente registrando todas las asignaciones de variables, es posible hacer esencialmente esto. Esta es la idea subyacente para la depuración omnisciente. La parte asombrosa es que los programas significativamente grandes se pueden depurar de esta manera: Ant, JUnit, el propio depurador.
Me preguntaba si algo existe (en el mundo de Java) capaz de tomar una instantánea del estado actual de JVM con las siguientes características:
- Hazlo mientras se lanza una excepción.
- Captura variables locales, argumentos del método, etc.
- Póngalo en un archivo útil que puede usarse para extraer o reproducir en un IDE la situación en su código fuente.
Las dos primeras características son obligatorias (la tercera sería increíble). Y debe ser adecuado para el uso de producción (por lo tanto, no hay forma de eliminar errores).
Antes de preguntar esto, busqué en WWW (el mayor tiempo posible) y encontré algunas indicaciones:
- Interceptor Cajoon : Como se dijo en la publicación Dzone , es un agente JVM pasivo que cumple con los tres requisitos. Pero tiene dos desventajas: debe pagar y el sitio está caído (tal vez no hay posibilidad de pagar nada).
- AviCode Intercept Studio : el equivalente .NET de Cajoon. Solo para dar una idea acerca de.
- JavaFrame : Ok, es un tweet, pero apunta a un repositorio SVN disponible que tiene el código fuente (bajo la licencia MIT) de un agente JVM que se ve bien (voy a intentarlo).
Entonces, ¿tal vez estoy buscando una solución inexistente? No es urgente, pero tenía esta idea para un proyecto y sería genial explorar este camino "desconocido" (?) Y obtener algo real.
Parece estar claro que sería un agente JVM (evento de excepción de JVMTI, por ejemplo ).
Por último, destacaría el siguiente párrafo del artículo de manejo de excepciones de Wikipedia :
En entornos de motor de tiempo de ejecución como Java o .NET, existen herramientas que se conectan al motor de tiempo de ejecución y cada vez que se produce una excepción de interés, registran la información de depuración que existía en la memoria en el momento en que se lanzó la excepción (call stack and heap valores). Estas herramientas se denominan herramientas automatizadas de manejo de excepciones o interceptación de errores y proporcionan información de ''causa raíz'' para las excepciones.
Esa es la idea. Espero que alguien me pueda dar alguna información o tal vez, en el futuro, alguien se inspire en esta humilde publicación :)
¡Gracias!
Es posible que desee examinar el trabajo que NetBeans ha realizado con respecto al registro de uso automatizado: http://wiki.netbeans.org/UsageLoggingSpecification .
En cuanto a eliminar las variables locales, me imagino que simplemente podría usar un depurador, como el mencionado por bajafresh4life.
Tal vez podría hacerse con AspectJ ?
Le doy un vistazo a JavaFrame y me parece un buen punto de partida. Simplemente instale Apache Ant, haga clic en el directorio javaframe e inicie el banco de pruebas (dentro del directorio de prueba) con:
LD_LIBRARY_PATH=../build/native/ java -agentlib:frameintrospect -classpath ../build/classes/:. org.thobe.frame.Test
No obtiene ninguna variable local, pero lo intenta. Entonces, como dije, puede ser un punto de partida. Espero llegar más lejos sobre su uso, pero no hay tiempo ni documentación (hay muchos proyectos llamados JavaFrame) que son malas circunstancias.
Tal vez algún día se pueda hacer de nuevo. Si de nuevo. Estaba Cajoon, parecía prometedor y brillante, pero su sitio web está inactivo y no hay rastros de ningún tarro descargable para probar.
¡Gracias a todos!
PD .: Solo como referencia, algunos enlaces que encontré mientras investigaba: