Features/EclipseCallGraph

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
m (Detailed Description)
m (Owner)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Launch local SystemTap scripts on Eclipse =
+
= Visualize C/C++ Projects With Eclipse =
  
 
== Summary ==
 
== Summary ==
Line 7: Line 7:
 
== Owner ==
 
== Owner ==
 
* Name: Charley Wang
 
* Name: Charley Wang
* E-mail: chwang@redhat.com
+
* E-mail: chwang at redhat.com
 
* Name: Roland Grunberg
 
* Name: Roland Grunberg
* E-mail: rgrunber@redhat.com
+
* E-mail: rgrunber at redhat.com
  
 
== Current status ==
 
== Current status ==
Line 18: Line 18:
 
== Detailed Description ==
 
== Detailed Description ==
  
Allow developers to profile their C/C++ projects directly from Eclipse, and view various runtime information about their program such as :
+
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
 
* Relationship between function calls
 
* Number of times each function was called
 
* Number of times each function was called
* Time an instance of a function took relative to whole program
+
* Time taken by each function instance relative to the program's execution time
* Cumulative time of a function relative to whole program
+
* Time taken by all instances of a function relative to program's execution time
* Ability to click on a function in the visual graph, and jump to its source code
+
* 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
 
* 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 :
+
In addition, this feature allows the viewing of the entire call hierarchy in various ways:
* One function at a time, and only its children, along with nodes coloured to represent whether that function has additional children
+
* Radial view: One central node, its most time-consuming children and its parent. Some nodes are highlighted to indicate presence of grandchildren.
* All function in a condensed tree-like structure to show as much of the call hierarchy as is possible
+
* Tree view: Condensed tree structure displaying all descendants of a given node.
* All functions in a larger tree structure so as to give the user the ability to pan around the hierarchy
+
* Box view: All descendants of a certain function call-depth (i.e. display all descendants of all great-grandchildren of main).
* All unique functions as boxes with colour and size relative to the number of calls, and time taken respectively
+
* Aggregate view: All unique functions as boxes with colour and size relative to the number of calls and time taken, respectively
* Ability to switch between viewing all instances of functions called, and all identical functions grouped together
+
* 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 ==
 
== Benefit to Fedora ==
Line 51: Line 51:
 
# The present release will only contain a preconstructed function call graph script, other preconstructed scripts and a launch wizard will be in future versions.
 
# The present release will only contain a preconstructed function call graph script, other preconstructed scripts and a launch wizard will be in future versions.
 
# For screenshots and more details, see: [[Eclipse/CallGraph]]
 
# For screenshots and more details, see: [[Eclipse/CallGraph]]
# Brief demo video : http://altrez.darktech.org/basicFunctions.ogg (~ 1 min)
+
# Brief demo video : http://rgrunber.fedorapeople.org/eclipse-callgraph.ogg (~ 3 min)
  
 
== Dependencies ==
 
== Dependencies ==

Latest revision as of 17:58, 9 August 2010

Contents

[edit] Visualize C/C++ Projects With Eclipse

[edit] Summary

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

[edit] Owner

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

[edit] Current status

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

[edit] 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.

[edit] 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.

[edit] Scope

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

[edit] Test Plan

  1. Run upstream unit tests

[edit] 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)

[edit] Dependencies

  • SystemTap translator/driver (version 0.9.8/0.141+) <rpm: systemtap>
  • Eclipse 3.4.1 or greater, with CDT <rpm: eclipse-cdt, eclipse-platform>
  • Eclipse GEF (specifically Zest) <rpm: eclipse-gef>

[edit] Contingency Plan

  • Continue without such capability.

[edit] Documentation

[edit] 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.