java - Java 中的简单动态调用图

标签 java code-analysis graphviz callstack

<分区>

我正在寻找一个简单的 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 文件?

c# - 代码分析期间的 LinkDemand 警告。错误CA2122

c# - 代码分析提示对象可以被处置不止一次。为什么?

形状=圆形的节点的大小

graph - Graphviz 是此类图的最佳工具吗?