1 Call Graph

A call graph (also known as a call multigraph is a control flow graph, which represents calling relationships between subroutines in a computer program. Each node represents a procedure and each edge indicates that procedure f calls procedure g. Thus, a cycle in the graph indicates recursive procedure calls.

Call graphs can be dynamic or static. A dynamic call graph is a record of an execution of the program, for example as output by a profiler. Thus, a dynamic call graph can be exact, but only describes one run of the program. A static call graph is a call graph intended to represent every possible run of the program. The exact static call graph is an undecidable problem, so static call graph algorithms are generally overapproximations. That is, every call relationship that occurs is represented in the graph, and possibly also some call relationships that would never occur in actual runs of the program.

  • Code Atlas, a plugin of SublimeText, which allows one to explore the call graph conveniently.
  • JVM Call Graph, call graph generator for JVM bytecode
  • Doxygen, Uses graphviz to generate static call/inheritance diagrams