JDCallgraph records which methods actually call each other while a Java program runs. It is a
Java agent (-javaagent:jdcallgraph.jar=config.ini) that instruments the target application
with ByteBuddy or Javassist. It works
with plain java and -jar runs as well as Maven and Ant test suites.
Besides call graphs, it can build a data dependency graph showing field access between methods.
Output formats include CSV, Graphviz dot and a matrix, and the config file controls what gets
traced and how.
This was a side-project of my master thesis about Fault Localization. I noticed there was no tool to record actual call patterns in Java programs, so I started building one.