我无法获取或修改程序的源代码。因此,我试图读取jvm(hotspot)源代码,以了解在获取“调用方法”指令时是否可以执行某些操作,但这似乎非常复杂。
我想知道相关代码应该从哪里开始,或者是否还有其他方法可以实现。
答案 0 :(得分:1)
无需修改JVM代码来拦截方法调用。有一种使用JVMTI的标准记录方法。
您将需要创建一个代理,该代理将为MethodEntry / MethodExit JVMTI事件设置回调,将其编译为共享库,然后使用-agentpath:/path/to/libYourAgent.so
选项运行Java。
请参阅在this question中使用MethodEntry / MethodExit事件的示例。