0% found this document useful (0 votes)
30 views

Eclipse Linux Tool

This document summarizes profiling C/C++ code using Eclipse. It describes the packages needed to profile with Eclipse, including the C/C++ Development Tools (CDT). It then explains several profiling tools integrated with Eclipse: Gcov for code coverage, Gprof for timing profiles, Valgrind for memory profiling, SystemTap for system profiling, Perf for CPU profiling, and Oprofile for CPU profiling. For each tool, it outlines how to set it up and use it within Eclipse, and includes screenshots of the tool views.

Uploaded by

鲍瑞琪
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

Eclipse Linux Tool

This document summarizes profiling C/C++ code using Eclipse. It describes the packages needed to profile with Eclipse, including the C/C++ Development Tools (CDT). It then explains several profiling tools integrated with Eclipse: Gcov for code coverage, Gprof for timing profiles, Valgrind for memory profiling, SystemTap for system profiling, Perf for CPU profiling, and Oprofile for CPU profiling. For each tool, it outlines how to set it up and use it within Eclipse, and includes screenshots of the tool views.

Uploaded by

鲍瑞琪
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 33

Profiling C/C++ Using Eclipse

Jeff Johnston ([email protected])


Principal Engineer, Red Hat
June 12, 2013
Packages

● devtoolset-2-ide (Eclipse components)


● scl-utils, devtoolset-2-eclipse-* (cdt, platform, linuxtools)
● devtoolset-2-perftools (Performance Tools)
● scl-utils, valgrind, oprofile, systemtap
● devtoolset-2-toolchain (Tool chain)
● scl-utils, gcc, binutils, gdb, elfutils
● devtoolset-2
● Includes all 3 packages above
CDT

● devtoolset-2-eclipse-cdt package
● C/C++ Developer Tools
● Project editing, building, debugging, indexing
● Similar to JDT (Java Developer Tools) only for C/C++
● Based on upstream Kepler contribution
● CDT 8.2.0
● Previous version is 7.0.0
Linux Tools

Eclipse plug-ins for supporting:


● Perf - devtoolset-2-eclipse-perf
● Oprofile - devtoolset-2-eclipse-oprofile
● Valgrind – devtoolset-2-eclipse-valgrind
● Gcov - devtoolset-2-eclipse-gcov
● Gprof - devtoolset-2-eclipse-gprof
● SystemTap - devtoolset-2-eclipse-systemtap
Profiling Framework

● New in Eclipse Linux Tools for DTS 2.0


● Novice users can profile via categories
● Timing, Code Coverage, Memory
● Each category has default tool
● Default tools can be set in C/C++ Preferences or
overridden in Project Properties->C/C++ General
● Categories accessed via new “Profiling Tools” context
menu
● Profile Memory, Profile Timing, Profile Code Coverage
Profiling Framework continued...

● New Profile As...-> Local C/C++ Application


● Shares settings with Debug / Run launch configurations
(e.g. Debug as...-> Local C/C++ Application)
● Program arguments, environment variables
● Profiling launch configuration dialog adds “Profiler” tab
● Allows user to select which profiling tool to use and settings for
that tool (any of the supported profiling tools can be specified)
● Multiple launch configurations are possible
● Default is to use Perf tool to record cpu-cycles
Profiling Framework continued....2

● New “Profiling Tools” context menu lists profiling


categories as well as individual tools
● Previously, these tools were shown under “Profile as..”
● “Profiling Tools Configurations” dialog allows user to
create/edit launch configurations for specific tools or
categories (e.g. Profile with Valgrind)
● Individual profiling tool settings are presented in dialog
as appropriate
Profiling Tools Menu
Gcov

● Profile code coverage (new for DTS 2.0)


● Only tool in “Profile Code Coverage” category
● Requires special hooks compiled in by gcc
● -fprofile-arcs and -ftest-coverage
● For Autotools projects, there is a checkbox under Project-
>Properties->Autotools->Configure Settings->Advanced
● For Managed make projects, one can use Project->Properties-
>C/C++ Build->Settings
● Recommended that optimization be turned off as inlining
fools coverage tool

Gcov continued...

● Each compiled file generates .gcda file during run


● Gcov viewer displays results in list with coverage
percentages
● double-clicking list item opens colored/annotated editor
● Green means coverage, red means no coverage
● Two ways to bring up Gcov viewer
● Double-click any .gcda/.gcno file after running
● Profile the application using Gcov
● e.g. Use “Profile Code Coverage” on binary
Gcov View
Gcov Editor Colorization
Gprof

● Generate flat timing profile


● call graph profile not supported in Eclipse
● New for DTS 2.0
● Requires special hooks compiled/linked in
● -pg compile/link option
● For Autotools projects, there is a check-box under Project-
>Properties->Autotools->Configure Settings->Advanced
● For Managed make projects, there is a check-box under
Project->Properties->C/C++ Build->Settings->GCC Compiler-
>Debugging (-pg)
Gprof continued...

● Creates gmon.out in CWD when program is run


● Gprof viewer displays results in tree list with timing
percentages
● Clicking on leaf list items brings up C/C++ editor
● Two ways to bring up Gcov viewer
● Double-click on gmon.out file after running application
● Profile the application using Gprof
● e.g. Use “Profile Code Timing” and reset tool to be gprof
instead of perf
Gprof View
Valgrind

● Uses simulation (can be slow)


● Multiple sub-tools
● memcheck (check for memory leaks)
● Default for “Profile Memory” category
● massif (display memory usage over time in chart)
● helgrind (check for memory usage in threads)
● New for DTS 2.0
● cachegrind (check for cache usage)
● Better to use Perf instead
Valgrind continued..

● Errors found by valgrind result in markers added to the


C/C++ editor
● Markers are cleared by selecting to clear all markers in
the Valgrind view
● Markers are not cleared by new build
Valgrind View (memcheck)
Valgrind Massif Chart
Valgrind View (massif)
Valgrind Error Markers
SystemTap

● Eclipse provides SystemTap script editor


● Hover/completion support with probe documentation
extracted from man pages (new for DTS 2.0)
● Right-click on script to compile/run or to set up run
configuration with SystemTap options (options new in
DTS 2.0)
● Can run script tied to running an Eclipse binary or user
can manually start/stop script and run anything in-
between (new in DTS 2.0)
SystemTap continued...

● “Run launch” configuration for SystemTap allows


setting up graphing specifications (new in DTS 2.0)
● User can specify regex filters for output data
● Graph type can also be selected
● Pie chart, standard graph, bar graph
Perf

● New for DTS 2.0 – default “Profile Timing” tool


● Similar events to Oprofile but no root access required
● Sub-commands supported:
● stat – event counts for application
● Can select which events to stat or use default set
● Can diff previous stat run or saved runs
● Can select multiple runs to get averaging and variance
● record/report/annotate – default usage
● Default event is cycles but is configurable
Perf continued...

● Perf view displayed


● For “stat” the events and numbers are displayed
● For “record”, tree lists are shown for each event
● Disassembly view supported for record (not stat)
● Disassembly generation is option in profiling
configuration settings
● Can search in disassembly view using Ctrl+f
● Can invoke directly using “Profile with Perf” in Profiling
Tools menu
Perf View
Perf Stat
Perf Disassembly View
Oprofile

● Requires root access to use


● Also need to echo 0> /proc/sys/kernel/nmi_watchdog
● Similar events to perf (default: CPU_CLK_UNHALTED)
● Oprofile view shows current session
● Session has tree list of events which open to show
percentages
● double-clicking on leaf nodes can bring up C/C++ editor
● Sessions can be saved, otherwise current session is
overwritten
Oprofile View
Further Information

● All profiling tools and CDT have user guides found in


Eclipse Help menu->Help Contents
● Linux Tools project wiki pages can be found at:
● http://wiki.eclipse.org/Linux_Tools_Project
● CDT project wiki pages can be found at:
● http://wiki.eclipse.org/index.php/CDT
Demo
Please fill in the survey form for this
presentation found in the back of the room

You might also like