Features/EclipseCallGraph

= Visualize C/C++ Projects With Eclipse =

Summary
Graphically displays the call hierarchy from executing a C/C++ binary, along with various other runtime statistics.

Owner

 * Name: Charley Wang
 * E-mail: chwang at redhat.com
 * Name: Roland Grunberg
 * E-mail: rgrunber at redhat.com

Current status

 * Targeted release: Fedora 12
 * Last updated: 2009-09-29
 * Percentage of completion: 100%

Detailed Description
Allow developers to profile their C/C++ projects directly from Eclipse, and view various runtime information about their program such as:
 * Relationship between function calls
 * Number of times each function was called
 * Time taken by each function instance relative to the program's execution time
 * Time taken by all instances of a function relative to program's execution time
 * Ability to jump to the point in the source where a function was defined, or to the approximate location where a function was called
 * Ability to 'step' through function calls within the graph in chronological order

In addition, this feature allows the viewing of the entire call hierarchy in various ways:
 * Radial view: One central node, its most time-consuming children and its parent. Some nodes are highlighted to indicate presence of grandchildren.
 * Tree view: Condensed tree structure displaying all descendants of a given node.
 * Box view: All descendants of a certain function call-depth (i.e. display all descendants of all great-grandchildren of main).
 * Aggregate view: All unique functions as boxes with colour and size relative to the number of calls and time taken, respectively
 * Collapse/Uncollapse: In collapse mode, all instances of B where A --> B will be grouped into a single node. In uncollapsed mode, each instance of B where A --> B will have its own separate node in the graph.

Benefit to Fedora
Makes it easier for C/C++ developers to use SystemTap. Offers developers new ways to trace function calls, system calls, with a tidy frontend for user-friendly data.

Scope
Adds a small plugin family to Eclipse, which will provide the above functionality.

Test Plan

 * 1) Run upstream unit tests

User Experience

 * 1) Users of Eclipse's CDT tools will be able to select Profile As and select the script to run.
 * 2) The present release will only contain a preconstructed function call graph script, other preconstructed scripts and a launch wizard will be in future versions.
 * 3) For screenshots and more details, see: Eclipse/CallGraph
 * 4) Brief demo video : http://rgrunber.fedorapeople.org/eclipse-callgraph.ogg (~ 3 min)

Dependencies

 * SystemTap translator/driver (version 0.9.8/0.141+) 
 * Eclipse 3.4.1 or greater, with CDT 
 * Eclipse GEF (specifically Zest) 

Contingency Plan

 * Continue without such capability.

Documentation

 * SystemTap documentation: The upstream website has documentation and examples of SystemTap scripts.
 * SystemTap Eclipse Documentation : Eclipse/CallGraph

Release Notes
Users will need to be part of the stapdev group on their machine in order to fully take advantage of SystemTap's offerings.