Как получить динамический граф вызовов Java-программы - PullRequest
0 голосов
/ 21 июня 2019

Я не могу получить или изменить исходный код программы.Поэтому я пытаюсь прочитать исходный код jvm (hotspot), чтобы узнать, смогу ли я что-то сделать, когда получу инструкцию «call method», но она кажется очень сложной.

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

1 Ответ

1 голос
/ 21 июня 2019

Нет необходимости изменять код JVM для перехвата вызова метода.Существует стандартный документированный способ сделать это, используя JVMTI .

. Вам потребуется создать агент, который будет устанавливать обратные вызовы для MethodEntry / MethodExit События JVMTI, скомпилируйте его в общую библиотеку, затем запустите Java с параметром -agentpath:/path/to/libYourAgent.so.

См. Пример использования событий MethodEntry / MethodExit в этот вопрос .

...