Jump to content

Guidelines and HOWTOs/Debugging/Valgrind: Difference between revisions

From KDE Community Wiki
*>CuCullin
m Fixed a link
Pino (talk | contribs)
add some basic instructions about using valgrind for memleak checking
Line 1: Line 1:
Valgrind is a [[Development/Tools|tool]] to analyze a program regarding memory leaks.
Valgrind is a [[Development/Tools|tool]] to analyze a program regarding memory leaks.
== Leak Detection ==
One of the valgrind tools is the memcheck, that can be used to detect memory leaks during the execution of an application.
To do that, valgrind can be started as:
> valgrind --tool=memcheck --leak-check=yes -v ''appname''
where ''appname'' is the application you want to run, including its parameters, if it have to be called with any.
As valgrind can produce a lot of output (and thus scroll out of your terminal), you can call valgrind redirecting its output to a file, so nothing gets lost.
> valgrind --tool=memcheck --leak-check=yes -v ''appname'' 2>&1 | tee ''valgrind.log''
This will call valgrind as seen above, and will redirect all the output coming from both our application and valgrind to a file in the current directory falled ''valgrind.log'' (of course it is possible to use any file name of the log).
=== Minor tweaks ===
* executing valgrind with <tt>--leak-check=full</tt> instead of <tt>--leak-check=yes</tt> can give a more detailed output, especially about the found leaks
== References ==
* [http://www.valgrind.org/ The Valgrind Homepage]
* [http://www.valgrind.org/ The Valgrind Homepage]
* [http://www.tldp.org/HOWTO/Valgrind-HOWTO/ Excellent tutorial at TLDP]
* [http://www.tldp.org/HOWTO/Valgrind-HOWTO/ Excellent tutorial at TLDP]

Revision as of 21:00, 5 March 2007

Valgrind is a tool to analyze a program regarding memory leaks.

Leak Detection

One of the valgrind tools is the memcheck, that can be used to detect memory leaks during the execution of an application.

To do that, valgrind can be started as:

> valgrind --tool=memcheck --leak-check=yes -v appname

where appname is the application you want to run, including its parameters, if it have to be called with any.

As valgrind can produce a lot of output (and thus scroll out of your terminal), you can call valgrind redirecting its output to a file, so nothing gets lost.

> valgrind --tool=memcheck --leak-check=yes -v appname 2>&1 | tee valgrind.log

This will call valgrind as seen above, and will redirect all the output coming from both our application and valgrind to a file in the current directory falled valgrind.log (of course it is possible to use any file name of the log).

Minor tweaks

  • executing valgrind with --leak-check=full instead of --leak-check=yes can give a more detailed output, especially about the found leaks

References