Что было бы наилучшим способом инструментария классов Java для создания обратного отладчика Java?

Я хотел бы создать обратный отладчик (отладчик, в котором можно вернуться к выполнению программы) для Java, и для этого мне нужно хранить переменные данные вместе с выполнением программы. Я буду использовать для этого глобальный кеш и статический метод, который обновляет кеш.

Я хотел бы оснастить загруженные классы таким образом, чтобы после каждого изменения поля / переменной вызывал мой статический метод: например:

public static void updateCache(String fullVarName, Object value){...}

Я заметил, что при обновлении поля putfieldинструкция выполнена. Когда локальная переменная обновляется,(I)STOREинструкция используется. Поэтому я подумал об инструментировании классов, и всякий раз, когда обнаруживается такой код операции, я просто вставляю другойgetfield или ILOAD после, чтобы получить значение обновленного поля / переменной, а затем я использую invokestatic вызвать мой статический метод со всей необходимой информацией.

Проблема в том, что есть и другие варианты использования, когда переменные представляют собой коллекции или массивы, и они обновляются с помощью определенных методов, например, при обновлении HashMap с map.put(key, value). Так что мне нужно перехватывать и эти вызовы, но таких методов много, и мне нужно найти и жестко запрограммировать их все...
Есть ли обходной путь? А может, мне чего-то не хватает, и есть более простое решение.

Изменить: я также раньше изучал JVMTI и запускал несколько тестов. Казалось, что это слишком медленно для моего случая использования, например, добавляет к моей программе замедление в 7-100 раз...

1 ответ

Если ваша цель - получить только возможность обратной отладки, вы можете попробовать Jive ( https://cse.buffalo.edu/jive/). Его можно использовать вместе с Eclipse.

Но если ваша цель - самостоятельно создать инструмент обратной отладки, эта статья может вам помочь: https://www.researchgate.net/publication/220093333_Back_to_the_Future_Omniscient_Debugging

Другие вопросы по тегам