Uso de instrumentación para registrar excepciones no manejadas

Estaba tratando de depurar la aplicación java utilizando la instrumentación. El problema con el sistema actual son

Apenas escrito ninguna declaración de registroMal manejo de excepciones

Esto hizo muy difícil rastrear la causa raíz de la funcionalidad rota.

Para manejar la situación he desarrollado una herramienta, el agente java usandoInstrumentation API, y pude inyectar sentencias de registro y resolví la mitad del problema.

Pero el siguiente problema es grabar la excepción. Quiero extender mi registro de herramientas a cada excepción lanzada durante la ejecución de la aplicación. Intenté inyectar el bloque 'try-catch' usandojavaassist API para los métodos (usandoaddCatch, insertBefore yinsertAfter), y es efectivo hasta cierto punto.

public byte[] transform(ClassLoader    loader,
        String              className,
        Class<?>            classBeingRedefined,
        ProtectionDomain    protectionDomain,
        byte[]              classfileBuffer)
        throws IllegalClassFormatException {
     if (className.startsWith("com/alu/")) {
          return insertLog(className, classBeingRedefined, classfileBuffer);
     }

     if(className.endsWith("Exception")){
         System.out.println("============= exception occured "+className);
     }

aquíinserLog(..) El método inyectará la declaración de registro necesaria y funciona bien, pero cuando hay alguna excepción, no llega al transformador.

Pero el problema es que algunos de los métodos se manejan dentro de la excepción (incluso sin log / sysout).

p.ej:

try {
            if(search.equals("Category")){
                //do operation
            }
        } catch (Exception e) {
        }

Este codigo comeNullPointerException cuando el valor desearch es nulo, nunca sé esta excepción y la aplicación falla por alguna otra cosa.

En última instancia, lo que quiero es un mecanismo para registrar cualquier excepción lanzada por la aplicación. los siguientes detalles deben ser capturados

Tipo de excepciónExcpetion StacktraceMétodo y nombre de clase

Sé que hay APIThread.setDefaultUncaughtExceptionHandler, pero no estoy seguro de cómo se usa con la instrumentación java. No tengo ninguna fuente de acceso a la aplicación.

[actualización 1]

Encontré abajo el link dice usarretransformation , Voy a dar una oportunidad y actualizar

¿Cómo instrumentar clases de sistema java?

Cualquier orientación sería de gran ayuda.

Respuestas a la pregunta(3)

Su respuesta a la pregunta