Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Linux Tools Project/Valgrind/User Guide
Overview
- Valgrind is a powerful and widely used memory profiling tool suite. (http://www.valgrind.org)
- This project aims to provide a useful integration of Valgrind tools with your Eclipse projects.
- Currently Memcheck, Massif and Cachegrind are supported.
- Valgrind 3.3.0 or greater is required.
Installing
- Add the update site (see: http://www.eclipse.org/linuxtools/downloads.php for details)
- Install Valgrind Integration
Using Memcheck
- Memcheck discovers memory management problems in your program. (http://www.valgrind.org/docs/manual/mc-manual.html)
- It is the default tool.
- The launch shortcut can create a configuration with default options for your program.
- Same as running
valgrind ./myprog
from the command line. - After a configuration has already been created, the launch shortcut will launch your most recently used configuration.
- Same as running
- Any memory management errors reported by Valgrind are listed in the Valgrind view, which should appear automatically.
- Each error has a stack trace.
- If the source can be resolved, double-clicking on the stack frame will open an editor to its line.
- View and modify your profile configuration by selecting "Profile Configurations".
- All Valgrind related configuration options can be changed from the Valgrind Options tab.
- General options and Suppressions are Valgrind core options and are not related to the tool being run.
- Details on Memcheck suppressions can be found here.
- Specific Memcheck options can also be configured.
Using Massif
- Massif is heap profiling tool that details memory usage throughout your program's execution. (see: http://www.valgrind.org/docs/manual/ms-manual.html)
- To use Massif, you need to switch the tool in your profile configuration.
- Massif has a lot of output to distil. There are 3 ways to view the data.
- Massif outputs statistics for each unit of time (default: instructions) in the application. These are called "snapshots" of your program.
- The Valgrind view initially displays each snapshot in a table showing heap allocation statistics.
- Some snapshots are detailed and have a function call trace corresponding to contribution heap allocations.
- Peak snapshot is in bold text.
- Detailed snapshots can be inspected by double-clicking on them in the snapshot table.
- Each detailed snapshot is shown in a tree structure that forms a hierarchy of function calls accounting for that snapshot's allocations.
- Double clicking on any function with a source file listed will attempt to open an editor to it.
- Toggle between the snapshot table and detailed snapshot tree with the "Show Heap Tree" button in the view's toolbar.
- Chart
- Interactivity
- The Valgrind view initially displays each snapshot in a table showing heap allocation statistics.
- Config Options
Using Cachegrind
- Link to valgrind.org doc
- Switching tool
- Interpreting Output
- Interactivity
Special Cases
- Handling program errors
- Handling Valgrind config errors