[英]How to get the dynamic call graph of a java program
我无法获取或修改程序的源代码。 所以我试图阅读 jvm(hotspot) 源代码,看看在它获取“调用方法”指令时我是否可以做些什么,但它看起来很复杂。
我想知道我应该从哪里开始相关代码,或者是否有其他方法可以做到这一点。
不需要修改JVM代码来拦截方法调用。 使用JVMTI有一种标准的文档化方法可以做到这一点。
您需要创建一个代理,该代理将为MethodEntry / MethodExit JVMTI 事件设置回调,将其编译为共享库,然后使用-agentpath:/path/to/libYourAgent.so
选项运行 Java。
请参阅此问题中使用 MethodEntry/MethodExit 事件的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.