Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Linux Tools Project/GProf/User Guide"

(Opening gmon.out)
m (Newer Version Configuration 3.2.* onwards)
 
(17 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{#eclipseproject:technology.linux-distros}}
+
= Overview =
{{Linux_Tools}}
+
= Overview =
+
The Gprof plugin allows to visualize in eclipse gprof's output (aka gmon.out).
+
  
For more details on gprof, visit the GNU Gprof documentation at http://sourceware.org/binutils/docs-2.20/gprof/index.html .
+
The Gprof plugin allows to visualize in eclipse gprof's output (aka gmon.out).  
  
= Installation and Set-Up =
+
For more details on gprof, visit the GNU Gprof documentation at http://sourceware.org/binutils/docs-2.20/gprof/index.html .
  
Gprof plugin depends on binutils (such as addr2line, c++filt and nm). Gprof can be used on any platform as soon as these binutils are in PATH. For example, you can use it on windows with cygwin.
+
= Installation and Set-Up  =
  
First of all, the user has to compile the C/C++ program with profiling enabled using the -pg option prior to running the tool.  
+
Gprof plugin depends on binutils (such as addr2line, c++filt and nm). Gprof can be used on any platform as soon as these binutils are in PATH. For example, you can use it on windows with cygwin.  
  
[[Image:Gprof-compile-step.png]]
+
== Older version Configuration pre 3.2.0 ==
 +
First of all, the user has to compile the C/C++ program with profiling enabled using the -pg option prior to running the tool. This can be done via the project Properties->C/C++ Build->Settings->Tool Settings->GCC C Compiler->Debugging tab which has a check-box "Generate Gprof Information (-pg)".  A similar check-box can be used for CDT Autotools projects.  It is found under project Properties->Autotools->Configure Settings->configure->Advanced.
  
= Opening gmon.out =
+
[[Image:LinuxtoolsGprofBuildConsole.png]]
  
Once the application run is finished, a gmon.out file is generated under the project.
 
  
[[Image:Gprof-project-explorer.png]]
+
== Newer Version Configuration 3.2.* onwards ==
 +
When the user tires to run gprof for the first time, the user will be asked if he would like eclipse to enable gprof for the user automatically.  
  
 +
This will enable the debug checkbox 'Generate gprof information (-pg)' in the setting shown in the following screenshot:
  
Double clicking on this file will open a dialog to select the associated binary.  
+
[[File:GProfSettings_page_2014.07.17.png|none ]]
  
[[Image:Gprof-binary-file.png]]
+
After which the tool will start and generate a new view as the output.
 +
 
 +
= Supported format  =
 +
 
 +
Up to now, the Gprof plugin supports gmon files generated on:
 +
 
 +
*linux (ELF) 32 bits<br>
 +
*linux (ELF) 64 bits
 +
*cygwin and BSD: support is not yet complete. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=333984
 +
*powerpc: ongoing. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=351355
 +
 
 +
= Opening gmon.out  =
 +
 
 +
Once the application run is finished, a gmon.out file is generated under the project.
 +
 
 +
[[Image:LinuxToolsGprofGmonOut.png]]
 +
 
 +
<br> Double clicking on this file will open a dialog to select the associated binary.
 +
 
 +
[[Image:LinuxToolsGprofDialog.png]]
 +
 
 +
 
 +
= Profiling Using GProf =
 +
 
 +
Instead of running the application and double-clicking the gmon.out file, you can also just profile the application using the gprof plug-in.  This will run the application and display the results for you.  To profile using gprof, you can use Profiling Tools->Profile Timing and set the timing tool to be gprof.
 +
 
 +
[[Image:LinuxToolsGprofTiming.png]]
 +
 
 +
In preferences, you can also go to: C/C++->Profiling->Categories->Timing and set the default timing tool to be gprof.
 +
 
 +
[[Image:LinuxToolsTimingPreferencesGprof.png]]
 +
 
 +
or for a project, you can override the workspace preference default using project Properties->C/C++ General->Profiling Categories->Timing
 +
 
 +
[[Image:LinuxToolsTimingPropertiesGprof.png]]
 +
 
 +
You can also profile your application using Profile as...->Local C/C++ Application whereby you have set the profiling tool in the Profiler tab to be gprof.
 +
 
 +
[[Image:LinuxToolsProfileLocalGprof.png]]
  
 
= GProf View  =
 
= GProf View  =
  
The Gprof view shows which parts of the program consume most of the execution time. It also provides call graph infomation for each function.
+
The Gprof view shows which parts of the program consume most of the execution time. It also provides call graph infomation for each function.  
  
<br> [[Image:Gprof-view.jpg]]  
+
<br> [[Image:LinuxToolsGprofView.png]]  
  
 
<br> Several buttons are available in the toolbar.  
 
<br> Several buttons are available in the toolbar.  
  
* [[Image:Gprof-export-to-csv.gif]] : "Export to CSV" button allows you to export the gprof result as a CSV text file, suitable for any spreadsheet.
+
*[[Image:Gprof-export-to-csv.gif]]&nbsp;: "Export to CSV" button allows you to export the gprof result as a CSV text file, suitable for any spreadsheet.  
* [[Image:Gprof-sort-per-file.gif]] : "Sort samples per file" button displays gprof result sorted by file.
+
*[[Image:Gprof-sort-per-file.gif]]&nbsp;: "Sort samples per file" button displays gprof result sorted by file.  
* [[Image:Gprof-sort-per-function.gif]] : "Sort samples per function" button displays gprof result sorted by function.
+
*[[Image:Gprof-sort-per-function.gif]]&nbsp;: "Sort samples per function" button displays gprof result sorted by function.  
* [[Image:Gprof-sort-per-line.gif]] : "Sort samples per line" button displays gprof result sorted by line.  
+
*[[Image:Gprof-sort-per-line.gif]]&nbsp;: "Sort samples per line" button displays gprof result sorted by line.  
* [[Image:Gprof-display-call-graph.png]] : "Display function call graph" button displays gprof result as a call graph.
+
*[[Image:Gprof-display-call-graph.png]]&nbsp;: "Display function call graph" button displays gprof result as a call graph.
 
+
* [[Image:Gprof-sample-time.gif]] : "Switch samples/time" button allows you to switch result display from samples to time and vice-versa.
+
* [[Image:Gprof-birt-chart.gif]] : "Create Chart..." button allows you to create a BIRT chart, with the current lines selected in the gprof result view.
+
  
 +
*[[Image:Gprof-sample-time.gif]]&nbsp;: "Switch samples/time" button allows you to switch result display from samples to time and vice-versa.
 +
*[[Image:Gprof-birt-chart.gif]]&nbsp;: "Create Chart..." button allows you to create a BIRT chart, with the current lines selected in the gprof result view.
  
 +
<br>
  
 
If program is compiled with debug option (e.g. "-g"), double-clicking on a item in the result will open the corresponding source location.
 
If program is compiled with debug option (e.g. "-g"), double-clicking on a item in the result will open the corresponding source location.
  
= Troubleshooting =
+
= Troubleshooting =
If you encounter a problem with gprof plugin, please [https://bugs.eclipse.org/bugs/enter_bug.cgi?assigned_to=xavier.raynaud@st.com&blocked=&bug_file_loc=http%3A%2F%2F&bug_severity=normal&bug_status=NEW&comment=&component=GProf&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&dependson=&description=&flag_type-1=X&flag_type-2=X&flag_type-4=X&flag_type-6=X&flag_type-7=X&flag_type-8=X&form_name=enter_bug&keywords=&op_sys=Linux&priority=P3&product=Linux%20Tools&qa_contact=&rep_platform=PC&short_desc= file a bug].
+
 
 +
If you encounter a problem with the gprof plugin, please [https://bugs.eclipse.org/bugs/enter_bug.cgi?bug_severity=normal&bug_status=NEW&comment=&component=GProf&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&dependson=&description=&flag_type-1=X&flag_type-2=X&flag_type-4=X&flag_type-6=X&flag_type-7=X&flag_type-8=X&form_name=enter_bug&keywords=&op_sys=Linux&priority=P3&product=Linux%20Tools&qa_contact=&rep_platform=PC&short_desc= file a bug].

Latest revision as of 15:22, 17 July 2014

Overview

The Gprof plugin allows to visualize in eclipse gprof's output (aka gmon.out).

For more details on gprof, visit the GNU Gprof documentation at http://sourceware.org/binutils/docs-2.20/gprof/index.html .

Installation and Set-Up

Gprof plugin depends on binutils (such as addr2line, c++filt and nm). Gprof can be used on any platform as soon as these binutils are in PATH. For example, you can use it on windows with cygwin.

Older version Configuration pre 3.2.0

First of all, the user has to compile the C/C++ program with profiling enabled using the -pg option prior to running the tool. This can be done via the project Properties->C/C++ Build->Settings->Tool Settings->GCC C Compiler->Debugging tab which has a check-box "Generate Gprof Information (-pg)". A similar check-box can be used for CDT Autotools projects. It is found under project Properties->Autotools->Configure Settings->configure->Advanced.

LinuxtoolsGprofBuildConsole.png


Newer Version Configuration 3.2.* onwards

When the user tires to run gprof for the first time, the user will be asked if he would like eclipse to enable gprof for the user automatically.

This will enable the debug checkbox 'Generate gprof information (-pg)' in the setting shown in the following screenshot:

GProfSettings page 2014.07.17.png

After which the tool will start and generate a new view as the output.

Supported format

Up to now, the Gprof plugin supports gmon files generated on:

Opening gmon.out

Once the application run is finished, a gmon.out file is generated under the project.

LinuxToolsGprofGmonOut.png


Double clicking on this file will open a dialog to select the associated binary.

LinuxToolsGprofDialog.png


Profiling Using GProf

Instead of running the application and double-clicking the gmon.out file, you can also just profile the application using the gprof plug-in. This will run the application and display the results for you. To profile using gprof, you can use Profiling Tools->Profile Timing and set the timing tool to be gprof.

LinuxToolsGprofTiming.png

In preferences, you can also go to: C/C++->Profiling->Categories->Timing and set the default timing tool to be gprof.

LinuxToolsTimingPreferencesGprof.png

or for a project, you can override the workspace preference default using project Properties->C/C++ General->Profiling Categories->Timing

LinuxToolsTimingPropertiesGprof.png

You can also profile your application using Profile as...->Local C/C++ Application whereby you have set the profiling tool in the Profiler tab to be gprof.

LinuxToolsProfileLocalGprof.png

GProf View

The Gprof view shows which parts of the program consume most of the execution time. It also provides call graph infomation for each function.


LinuxToolsGprofView.png


Several buttons are available in the toolbar.

  • Gprof-export-to-csv.gif : "Export to CSV" button allows you to export the gprof result as a CSV text file, suitable for any spreadsheet.
  • Gprof-sort-per-file.gif : "Sort samples per file" button displays gprof result sorted by file.
  • Gprof-sort-per-function.gif : "Sort samples per function" button displays gprof result sorted by function.
  • Gprof-sort-per-line.gif : "Sort samples per line" button displays gprof result sorted by line.
  • Gprof-display-call-graph.png : "Display function call graph" button displays gprof result as a call graph.
  • Gprof-sample-time.gif : "Switch samples/time" button allows you to switch result display from samples to time and vice-versa.
  • Gprof-birt-chart.gif : "Create Chart..." button allows you to create a BIRT chart, with the current lines selected in the gprof result view.


If program is compiled with debug option (e.g. "-g"), double-clicking on a item in the result will open the corresponding source location.

Troubleshooting

If you encounter a problem with the gprof plugin, please file a bug.

Back to the top