Использование инструментов для записи необработанного исключения

Я пытался отладить Java-приложение с помощью инструментов. Проблема с текущей системой

Едва ли написаны какие-либо записи журналаПлохая обработка исключений

Это сделало очень трудно отследить первопричину нарушенной функциональности.

Чтобы справиться с ситуацией, я разработал инструмент, Java-агент, использующийInstrumentation API, и я смог ввести лог-операторы, и половина проблемы была решена.

Но следующая проблема заключается в записи исключения. Я хочу расширить свою запись инструмента на каждое исключение, сгенерированное во время выполнения приложения. Я пытался сделать инъекциюпопробуй поймать' блокировать с помощьюjavaassist API для методов (используя,addCatchinsertBefore а такжеinsertAfter), и это в определенной степени эффективно.

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);
     }

ВотinserLog(..) Метод вставит необходимый лог-оператор и работает нормально, но когда есть исключение, он неПриходи к трансформатору.

Но проблема в том, что некоторые методы обрабатывают исключение внутри (даже без log / sysout).

например:

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

Этот код естNullPointerException когда значениеsearch является нулевым, я никогда не знаю это исключение, и приложение перестало работать для чего-то еще.

В конечном итоге мне нужен механизм для записи любого исключения, выдаваемого приложением. следующие детали должны быть зафиксированы

Тип исключенияStacktrace ExcpetionМетод и название класса

Я знаю, что есть APIThread.setDefaultUncaughtExceptionHandler, но не уверен, как это использовать с инструментарием Java. Я неНе иметь доступа к приложению из любого источника.

[обновление 1]

Я нашел ссылку ниже, чтобы использоватьretransformation Я дам попробовать и обновить

Как использовать классы системы Java?

Любое руководство будет очень полезным.>

Ответы на вопрос(3)

Ваш ответ на вопрос