<分区>
我正在寻找一个简单的 Java 动态调用图记录器,您可以添加几行代码。我知道有一个 Aspect J solution .另外,我帮助 Zola 开发了 Glow for C/C++所以我可以重写一个类似的工具,但我不想深入研究 JVM 的内部结构。
目前有任何比 AspectJ 解决方案更稳定且更好的开源解决方案吗?
目的是作为对代码的某些部分进行单元测试的辅助工具,您希望获得有关其行为的更多信息。
<分区>
我正在寻找一个简单的 Java 动态调用图记录器,您可以添加几行代码。我知道有一个 Aspect J solution .另外,我帮助 Zola 开发了 Glow for C/C++所以我可以重写一个类似的工具,但我不想深入研究 JVM 的内部结构。
目前有任何比 AspectJ 解决方案更稳定且更好的开源解决方案吗?
目的是作为对代码的某些部分进行单元测试的辅助工具,您希望获得有关其行为的更多信息。
最佳答案
我认为您想通过任何可能的方式收集调用图(而不是仅仅一组调用)。
可以使用静态分析器(如果你能得到足够强大的分析器)来收集潜在的调用图。动态方法通过检测代码在运行时收集一个。有些人可能特别想要动态的,因为他们想要查看一组特定输入数据的实际调用图。
有几个 Java 分析器可以动态收集这些信息,包括 ours .据我所知,这样做的都不是开源的,但我可能是错的。
此类分析器通常通过检测代码(如果语言 [例如 Java、C#] 具有源代码或 VM 代码)来工作。他们如何做取决于供应商。 在我们的例子中,我们使用我们的 program transformation tools将源代码从其原始形式转换为也收集分析数据的形式。
您也可以使用 AspectJ 插入工具来执行此操作。 【值得注意的是,切面只是程序改造的一个特例】。当然,除了检测代码之外还有更多的工作;您必须有效地收集运行时数据,并在执行过程之后生成调用图。因此,完成所有这些工作相当费力,但您可能从您的 Glow 体验中知道这一点。
关于java - Java 中的简单动态调用图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540423/
相关文章:
java - 在生产 Java SDK 中向表添加和删除属性的 DynamoDB 解决方案
java - 短信存储在数据库中,与数据库进行比较并使用smslib在java中返回短信,如何实现?
python - 调用异常 : GraphViz's executables not found (Python)
Jaunt Webcrawler 上的 Java Android Studio 空指针异常
java - 如何将 .jar 文件添加到 Mac OS X 上的类路径?
java - 如何使用 soot 分析 .class 文件?