Valgrind
This page is part of the debugging series — pages with debugging details for a variety of Ubuntu packages.
Contents
Valgrind is a suite of tools for debugging and profiling programs. There are three tools: a memory error detector, a time profiler, and a space profiler.
For debugging purposes, the memory error detector is a handy tool.
Memory error detection
The most important of these is the memory error detector, which tracks the usage of every single bit in a program, and warns if there's something suspicious. Valgrind can detect if memory is used before it has a value, memory is leaked, or memory is used twice.
This makes it ideal for tracking down segmentation faults, bus errors, and general memory leaks.
Warning /!\ Please ensure you have packages with debug symbols installed. You can do this by following the instructions at DebuggingProgramCrash.
Make sure Valgrind is installed.
sudo apt-get install valgrind
Remove any old Valgrind logs:
rm valgrind.log*
Start the program under control of memcheck:
G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log $(which <program>) <arguments>
N.B. valgrind can't solve paths, so you should feed it the full program path, to get it: $(which <program>)
- The program will start. It may take a while; this is normal, because Valgrind must perform extensive checking to detect memory errors.
- Perform any actions necessary to reproduce the crash.
Package up the log files (no need if there is only one):
tar -zcf valgrind-logs-<program>.tar.gz valgrind.log*
Attach the complete output from Valgrind, contained in valgrind-logs-<program>.tar.gz, in your bug report.
CategoryBugSquad CategoryDebugging
Other languages
Valgrind (last edited 2013年01月03日 17:20:38 by brian-murray )