Я пытаюсь изменить OpenJDK 9, чтобы регистрировать каждый метод, вызываемый программой Java, в частности, я экспериментирую с очень простым классом с main, который вызывает один из своих собственных статических методов, который печатает строку на стандартный вывод один раз каждые две секунды (ожидание выполнено с помощью Thread.sleep) После прочтения этого сообщения в блоге я добавил код ведения журнала внутри javaCalls::call. Это работает, регистрируя множество вызовов от запуска JVM до вызова Myclass.main, затем он останавливается (моя программа продолжает печатать). После выхода из программы с помощью CTRL^C журналирование возобновляется и регистрирует такие методы, как Thread.exit. Затем я попробовал другой способ: использовать hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp в каждом байт-коде для вызова. Хуже, чем раньше, это ничего не печатает.
Сначала я полагался на новую функцию ведения журналов JDK 9, но затем решил добавить данные непосредственно в файл, чтобы исключить возможность отключения журнала в какой-то момент.
У меня есть два вопроса:
- Я неправильно истолковал цитируемый блог? Разве моей первой попытки не должно быть достаточно, чтобы все записать?
- Есть ли у вас какие-либо предложения относительно момента, когда у меня будет больше шансов достичь своей цели?
-Djava.compiler=NONEиз этот вопрос и ничего не меняется. - person scristalli   schedule 13.11.2017