如何获取Java程序的动态调用图

时间:2019-06-21 10:56:07

标签: java jvm jvm-hotspot

我无法获取或修改程序的源代码。因此,我试图读取jvm(hotspot)源代码,以了解在获取“调用方法”指令时是否可以执行某些操作,但这似乎非常复杂。

我想知道相关代码应该从哪里开始,或者是否还有其他方法可以实现。

1 个答案:

答案 0 :(得分:1)

无需修改JVM代码来拦截方法调用。有一种使用JVMTI的标准记录方法。

您将需要创建一个代理,该代理将为MethodEntry / MethodExit JVMTI事件设置回调,将其编译为共享库,然后使用-agentpath:/path/to/libYourAgent.so选项运行Java。

请参阅在this question中使用MethodEntry / MethodExit事件的示例。