【发布时间】:2012-07-27 23:07:21
【问题描述】:
我正在寻找用于 C 或 C++ 中 Java 的 BCI(字节码检测)库,以便在 JVMTI agent 中使用。
到目前为止,我发现的最接近的只是 Kelly O'Hair 几年前编写的演示 java_crw_demo,此后一直用于 Sun 的/Oracle 的教程中。
你还知道什么吗?
一些理由:我正在构建一个检测工具来向
java.lang.Object添加一个getter 方法,并在Object的每个直接子类中重载这个getter。由于这个原因,我不能使用 Java 代理。此外,出于复杂性和速度的原因,我想避免生成辅助 JVM 来执行检测。
【问题讨论】:
-
这是一个很好的问题,但对你的理由提出警告:你会发现大多数 JVM 不允许你检测 j.l.Object。
-
是的,它们会以某种有限的方式进行:例如,我应该能够在 HotSpot 中添加 不超过 1 个非静态方法。我不能在那里添加任何非静态字段......因此我不得不求助于上面的方法:在 Object 中本地实现 getter,在子类中实现字段覆盖 getter。 (HotSpot 作为最常用和最优化的一个,是一个很好的基准。)
标签: java c instrumentation jvmti bcel