Difference between revisions of "Valgrind"
Albensoeder (talk | contribs) (Created page with "The program valgrind is a tool to detect memory leaks and violations in a program. It tracks the allocated memory and checks if it was freed. Additionally it checks if a programm...") |
(→Usage) |
||
Line 15: | Line 15: | ||
#!/bin/bash | #!/bin/bash | ||
# filename: my_valgrind_run.sh | # filename: my_valgrind_run.sh | ||
valgrind -v -- | valgrind -v --leak-check=full <mpiprogram> [program_options] >& valgrind.out.$PMI_RANK | ||
for Intel MPI. When launching the script with | for Intel MPI. When launching the script with | ||
Line 26: | Line 26: | ||
* By using valgrind the runtime of the tested program increases dramatically so that the tests should be done on small problems. | * By using valgrind the runtime of the tested program increases dramatically so that the tests should be done on small problems. | ||
* Sometimes error messages occurs due to compiler libraries (especially Intel compiler) which are not really an error. | * Sometimes error messages occurs due to compiler libraries (especially Intel compiler) which are not really an error. | ||
== External links == | == External links == | ||
* [http://valgrind.org/| Homepage of valgrind] | * [http://valgrind.org/| Homepage of valgrind] | ||
* [http://valgrind.org/docs/manual/manual.html| User guide] | * [http://valgrind.org/docs/manual/manual.html| User guide] |
Revision as of 17:12, 10 December 2012
The program valgrind is a tool to detect memory leaks and violations in a program. It tracks the allocated memory and checks if it was freed. Additionally it checks if a programm writes outside its allocated memory or threads writes at the same time to the same memory.
Usage
To use valgrind the code should be compiled with debug symbols (-g option for most of the compilers) so that errors could be backtraced to the source code line. After compiling the program will be started with valgrind typically by
valgrind -v --leack-check=full <program> [program_options] >& valgrind.out
The typical output of valgrind is very long and sometimes not easy to understand. For more informations see the user guide.
For analyzing parallel MPI programs the mpirun/mpiexec statement including its options must precede the command line above. In this case it could be useful to write the command line above into a small shell script and pipe the output into a file with a suffix of the rank. For example
#!/bin/bash # filename: my_valgrind_run.sh valgrind -v --leak-check=full <mpiprogram> [program_options] >& valgrind.out.$PMI_RANK
for Intel MPI. When launching the script with
mpirun -np <number_of_processes> ... my_valginrd_run.sh
the output is redirected into the files valdgrind.out.[0...<number_of_processes>] for each process.
Note:
- By using valgrind the runtime of the tested program increases dramatically so that the tests should be done on small problems.
- Sometimes error messages occurs due to compiler libraries (especially Intel compiler) which are not really an error.