Introduction to Valgrind

Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile programs in detail. Valgrind can also be used to build new tools.

This package is known to build and work properly using an LFS 12.1 platform.

Package Information

Additional Downloads

Valgrind Dependencies


GDB-14.1 (for tests), LLVM-17.0.6 (with Clang), and Which-2.21 (for tests)

Installation of Valgrind

First, make several changes that are required for Valgrind to function on systems with glibc-2.39 and binutils-2.42 installed:

patch -Np1 -i ../valgrind-3.22.0-upstream_fixes-1.patch

Install Valgrind by running the following commands:

sed -i 's|/doc/valgrind||' docs/ &&

./configure --prefix=/usr \
            --datadir=/usr/share/doc/valgrind-3.22.0 &&

To test the results, issue: make regtest. The tests may hang forever if GDB-14.1 is not installed. Some tests are known to hang also, depending on the version of glibc. A few tests can fail in various suites. Problematic tests can be disabled by changing the prereq: line in the corresponding .vgtest file to prereq: false. For example:

sed -e 's@prereq:.*@prereq: false@' \
    -i {helgrind,drd}/tests/pth_cond_destroy_busy.vgtest


The OpenMP tests are skipped if libgomp has been compiled with --enable-linux-futex (the default). If needed, just recompile the libgomp library from the gcc build tree, passing --disable-linux-futex to configure, storing the library to some place and changing the link from /usr/lib/ to point to the new library.

Now, as the root user:

make install

Command Explanations

sed -i ... docs/ : This sed provides for installing the documentation in a versioned directory.

--enable-lto=yes: This option allows building Valgrind with LTO (link time optimization). This produces a smaller/faster Valgrind (up to 10%), but build time increases to about 5.5 SBU.


Installed Programs: callgrind_annotate, callgrind_control, cg_annotate, cg_diff, cg_merge, ms_print, valgrind, valgrind-di-server, valgrind-listener, and vgdb
Installed Libraries: None
Installed Directories: /usr/lib/valgrind, /usr/libexec/valgrind, /usr/include/valgrind, and /usr/share/doc/valgrind-3.22.0

Short Descriptions


is a program for debugging and profiling Linux executables


takes an output file produced by the Valgrind tool Callgrind and prints the information in an easy-to-read form


controls programs being run by the Valgrind tool Callgrind


is a post-processing tool for the Valgrind tool Cachegrind


compares two Cachegrind output files


merges multiple Cachegrind output files into one


takes an output file produced by the Valgrind tool Massif and prints the information in an easy-to-read form


is a server that reads debuginfo from objects stored on a different machine


listens on a socket for Valgrind commentary


is an intermediary between Valgrind and GDB or a shell