Linux Tools Project - Function Callgraph

Overview

The Linux Tools Project Function Callgraph plugin aims to provide an easy-to-use tool for C/C++ function and timing visualization. The Callgraph plugin uses the powerful SystemTap language as a back-end, allowing it to monitor the status of a program -- function calls, returns, times and even user-space variables. The resulting data is displayed using Zest to create a visually pleasing graph of your entire program, or whatever parts of it you suggest. The graph shows timing information, and can be used for optimization.
In Aggregate Mode, you can see a grid of all functions used in your program, coloured and sized according to the number of calls and the amount of time taken by each function. If you hold ctrl and double-click on a function, you will be taken to the point in code where that function was defined.


Extensibility

  • With the Eclipse-Callgraph projects installed, you can create a a new launch for any kind of project by extending a single class: SystemTapLaunchShortcut.
  • The only function that needs to be defined is the setScriptPath variable -- your script will automatically select a text parser and viewer by default.
  • By setting parameters in your Launch class, you can modify many of the parameters in the resulting command-line call to SystemTap. You can even change the STAP_PATH to use a different command-line tool altogether!

Future Plans

  • Integrate with SystemTapGUI for server-based launching and more graphing options.

Try it out

Please use our update site as described here.
You can also check the project plugins out of Git directly from eclipse.org at git://git.eclipse.org/gitroot/linuxtools/org.eclipse.linuxtools.git.


Screenshots

Callgraph rendering of a binary, TreeView

Tree view screenshot

Callgraph rendering of a binary, Aggregate View

Aggregate view screenshot