1

我想callgraph从使用框架编写的基准生成jmh。为此,我正在使用https://github.com/gousiosg/java-callgraph。我尝试为 jar 文件生成一个静态调用图target/benchmarks.jar,它可以工作。现在我想生成动态调用图,所以我使用了以下命令:

java -jar target/benchmarks.jar -jvmArgs "-javaagent:target/javacg-0.1-SNAPSHOT-dycg-agent.jar"

但是没有callgraph.txt创建输出文件。

4

1 回答 1

3

您是否尝试过首先为常规 Java 应用程序创建动态调用图?或者,至少,尝试使用 javaagent 调用主机 JVM?静态调用图有效的事实并不意味着动态应该。

如果您尝试动态,那么您会意识到即使没有 JMH 参与它也不会“工作”。诀窍是“包含”要检测的类:

java -jar ~/projects/jmh/jmh-samples/target/benchmarks.jar \
    -jvmArgs "-javaagent:target/javacg-0.1-SNAPSHOT-dycg-agent.jar=\"incl=org.*\"" \ 
    Hello -f 1 -wi 5 -i 5
于 2015-05-05T21:52:16.523 回答