【发布时间】:2011-07-25 21:25:30
【问题描述】:
我正在尝试创建一个工具,该工具可以捕获 Java 程序进行的所有读写操作。另外,我想知道访问/修改了什么对象的哪些字段。
我目前在看:-
1) java.lang.instrument 我对此无能为力。我无法理解如何编写一个可以访问正在运行的程序并在不同对象/字段和任何相关内容上创建监视的代理。如果您对此有任何想法或信息,我将不胜感激。
2) jvmti 我查看了 jvmti 并尝试创建一个 jvmti 工具,但我发现要获取对象,我需要 JVMTI_EVENT_OBJECT_ALLOC 是一种潜在的能力。但是,我想,事实并非如此。此外,我读到 new 命令不会调用此事件。因此,目前,即使这似乎也不适用。
那么,我想知道你们是否知道用上述方法或您可能知道的任何其他技术/工具来做我想做的事情?
注意:我无权访问应用程序的源代码。所有,我有的是类文件。
【问题讨论】:
-
类文件是乱码还是可以反编译?
-
嗨,马特,我将 java 应用程序作为单个 jar 文件。
-
我的问题更倾向于:你想解决一般问题还是只针对你的特定 jar 文件?
-
我想解决它,以便我可以将它用于任何应用程序。
标签: java instrumentation jvmti javaagents