java - 检测 Java 应用程序的执行(不仅仅是字节码)

标签 java instrumentation

我正在做一些 Java 应用程序检测。但是使用 ASM 或 BCEL 的可用检测工具只允许检测字节码。你们知道一些可以检测应用程序执行的工具吗(比如那些不仅存在于字节码中而且 JVM 做到了的东西)。

例如,如果应用程序有一个类 A

class A
{
 int a;

 public A()
 {}
}

当我执行 A obj = new A() 时,字节码将不包含对 obj.a 的任何写入,但 JVM 会这样做,< strong>AFIK.

还有一些其他的东西是字节码无法捕获的。那么,你们能告诉我是否存在这样一个框架,可以捕获JVM 执行的操作。

最佳答案

如果您想完全控制仪器,理想情况下您需要完全访问源代码并能够修改它。否则,您将受字节码保留内容的支配。

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

您选择检测什么取决于您。这paper on instrumenting code描述了如何构建经典的测试覆盖率,但思路很笼统。

关于java - 检测 Java 应用程序的执行(不仅仅是字节码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8627179/

相关文章:

java - 从图像文件中扫描二维码

java - 删除 Java Mail 中已删除的电子邮件

x86 - 为什么这个dynamorio的指令跟踪程序输出比我的多?

java - java.lang.instrument 有多成熟?

java - 检测 Java 类以创建反向 Java 调试器的最佳方法是什么?

java - 大型 XML 的 XML 节点到字符串转换

java - 烧烤-条码背景搭配图片背景

java - 使用JCodeModel生成toString()方法

x86 - IARG_EXPLICIT_MEMORY_EA 应该用于什么用途?

java - 使用Instrumentation API时,JVM崩溃时EXCEPTION_ACCESS_VIOLATION