我正在做一些Java应用程序检测。但是使用ASM或BCEL的可用检测工具仅允许检测字节码。你们知道一些可以检测应用程序执行情况的工具(例如,字节码中没有的东西,但JVM确实有)。

例如,如果应用程序具有A类

class A
{
 int a;

 public A()
 {}
}


当我执行A obj = new A()时,字节代码将不包含对obj.a的任何写操作,但是JVM将执行AFIK。

还有其他无法用字节码捕获的内容。所以,你们能告诉我是否存在一个可以捕获JVM执行的操作的框架。

最佳答案

如果要完全控制仪器,理想情况下,您需要完全访问源并具有修改源的能力。否则,您将无法保留字节码。

我们的DMS Software Reengineering Toolkit是一个程序转换系统,可提供对源的这种访问。使用其Java Front End,DMS可以解析(Java)代码,构建AST,对AST进行任意转换以及重新生成检测的Java代码。

您选择的乐器取决于您自己。该paper on instrumenting code描述了如何建立经典的测试覆盖率,但是这些想法是通用的。

09-26 18:42
查看更多