# Valgrind, version 2.4.0

This manual was last updated on 4 March 2005

jseward@acm.org, njn25@cam.ac.uk, jeremy@goop.org
Copyright © 2000-2005 Julian Seward, Nick Nethercote, Jeremy Fitzhardinge

Valgrind is licensed under the GNU General Public License, version 2
An open-source tool for debugging and profiling Linux-x86 executables.

## Contents of this manual

#### 1 Introduction

1.1 An overview of Valgrind
1.2 How to navigate this manual

#### 2 Using and understanding the Valgrind core

2.1 What it does with your program
2.2 Getting started
2.3 The commentary
2.4 Reporting of errors
2.5 Suppressing errors
2.6 Command-line flags for the Valgrind core
2.7 The Client Request mechanism
2.8 Support for POSIX pthreads
2.9 Handling of signals
2.10 Building and installing
2.11 If you have problems
2.12 Limitations
2.13 How it works -- a rough overview
2.14 An example run
2.15 Warning messages you might see

#### 3 Memcheck: a heavyweight memory checker

#### 4 Cachegrind: a cache-miss profiler

#### 5 Addrcheck: a lightweight memory checker

#### 6 Helgrind: a data-race detector

#### 7 Massif: a heap profiler

The following is not part of the user manual. It describes how you can write tools for Valgrind, in order to make new program supervision tools.

#### 8 Valgrind Tools

The following are not part of the user manual. They describe internal details of how Valgrind works. Reading them may rot your brain. You have been warned.

#### 9 The design and implementation of Valgrind

#### 10 How Cachegrind works