.TH VALGRIND  "1" "" ""

.SH NAME
\fBvalgrind \fP- a memory debugger for x86-linux

.SH SYNOPSIS
.nf
.fam C
\fIvalgrind\fP [\fIvalgrind\fP \fIoptions\fP] \fIyour-program\fP [\fIyour-program\fP \fIoptions\fP]
.fam T
.fi

.SH DESCRIPTION
\fBvalgrind\fP is a flexible program for debugging and profiling Linux-x86
executables. It consists of a core, which provides a synthetic x86 CPU
in software, and a series of "tools", each of which is a debugging or
profiling tool. The architecture is modular, so that new tools can be
created easily and without disturbing the existing structure.

.PP
This manual page covers only basic usage and options.  Please see the
HTML documentation for more comprehensive information.

.SH INVOCATION
\fBvalgrind\fP is typically invoked as follows:

    valgrind program args

This runs \fBprogram\fP (with arguments \fBargs\fP) under valgrind
using the \fBmemcheck\fP tool.  \fBmemcheck\fP performs a range of
memory-checking functions, including detecting accesses to uninitialized
memory, misuse of allocated memory (double frees, access after free,
etc.) and detecting memory leaks.

To use a different tool, use the \fB--tool\fP option:

    valgrind --tool=toolname program args

The following tools are available:

.RS
.TP
.B
- addrcheck
\fBaddrcheck\fP is similar to memcheck, but does not perform the same
granularity of memory checking.  This will run faster and use less memory,
but may miss some problems that \fBmemcheck\fP would catch.
.TP
.B
- cachegrind
\fBcachegrind\fP is a cache simulator.
." .TP
." .B
." - helgrind
." \fBhelgrind\fP spots potential race conditions in your program.
.TP
.B
- lackey
\fBlackey\fP is a sample tool that can be used as a template for
generating your own tools. After the program terminates, it prints out
some basic statistics about the program execution.
.TP
.B
- massif
\fBmassif\fP is a heap profiler.  It measures how much heap memory your
program uses.
.TP
.B
- memcheck
\fBmemcheck\fP is a fine-grained memory checker.
.TP
.B
- none
\fBnone\fP performs no function - it simply runs the program under
\fBvalgrind\fP.  This is typically used for debugging and benchmarking
\fBvalgrind\fP.
.RE

.SH COMMON CORE OPTIONS

.TP
.B
--db-attach=<yes|no> [default: no]
When enabled, \fBvalgrind\fP will pause after every error shown and
print the line:

.PP
.nf
.fam C
       ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ----

.fam T
.fi

.RS
Pressing Ret, or N Ret or n Ret, causes \fBvalgrind\fP not to start a
debugger for this error.

.PP
Pressing Y Ret or y Ret causes \fBvalgrind\fP to start the debugger
(specified by the \fB--db-command\fP option) for the program at this
point. When you have finished with the debugger, quit from it, and
the program will continue. Trying to continue from inside the debugger
doesn't work.

.PP
Pressing C Ret or c Ret causes \fBvalgrind\fP not to start the debugger
and \fBvalgrind\fP will not ask again.

.PP
--db-attach=yes conflicts with --trace-children=yes. You can't use them
together. \fBvalgrind\fP refuses to start up in this situation. 1 May
2002: this is a historical relic which could be easily fixed if it gets
in your way. Mail me and complain if this is a problem for you.

.PP
Nov 2002: if you're sending output to a logfile or to a network socket,
I guess this option doesn't make any sense. Caveat emptor.
.RE

.TP
.B
--db-command=<command> [default: gdb -nw %f %p]
Specify the debugger to use with the --db-attach command. The
default debugger is gdb. This option is a template that is expanded by
\fBvalgrind\fP at runtime.  \fB%f\fP is replaced with the executable's
file name and \fB%p\fP is replaced by the process ID of the executable.
.TP
.B

--error-limit=<yes|no> [default: yes]
When enabled, \fBvalgrind\fP stops reporting errors after 30000 in total,
or 300 different ones, have been seen. This is to stop the error tracking
machinery from becoming a huge performance overhead in programs with
many errors.
.TP
.B

--gen-suppressions=<yes|no> [default: no]
When enabled, \fBvalgrind\fP will pause after every error shown and
print the line:

.PP
.nf
.fam C
       ---- Print suppression ? --- [Return/N/n/Y/y/C/c] ----

.fam T
.fi

.RS
Pressing Y Ret or y Ret will cause a suppression for this error to be
printed. This suppression can be cut-and-paste into a custom suppressions
file and used to suppress this error in subsequent runs.

.P
Pressing Ret or n Ret or N Ret will cause no suppression to be printed.

.P
Pressing C Ret or c Ret will cause no suppression to be printed and
\fBvalgrind\fP will not ask again.
.RE

.TP
.B
-h --help
Show help for all options, both for the core and for the selected tool.

.TP
.B
--help-debug
Show help for all options, both for the core and for the selected tool,
including options for debugging \fBvalgrind\fP.

.TP
.B
--log-file=<filename>
Specifies that \fBvalgrind\fP should send all of its messages to the
specified file. In fact, the file name used is created by concatenating
the text filename, ".pid" and the process ID, so as to create a file
per process.  The specified file name may not be the empty string.

.TP
.B
--num-callers=<number> [default=12]
By default, \fBvalgrind\fP shows 12 levels of function call names to
help you identify program locations. You can change that number with
this option. This can help in determining the program's location in
deeply-nested call chains. Note that errors are commoned up using only
the top three function locations (the place in the current function,
and that of its two immediate callers). So this doesn't affect the total
number of errors reported.

.RS
.PP
The maximum value for this is 50. Note that higher settings will make
\fBvalgrind\fP run a bit more slowly and take a bit more memory, but
can be useful when working with programs with deeply-nested call chains.
.RE

.TP
.B
-q --quiet
Run silently, and only print error messages. Useful if you are running
regression tests or have some other automated test machinery.

.TP
.B
--suppressions=<filename> [default: $PREFIX/lib/\fBvalgrind\fP/default.supp]
Specifies an extra file from which to read descriptions of errors to
suppress. You may specify up to 10 additional suppression files.

.TP
.B
--tool=<toolname> [default: memcheck]
Specify which tool to use. The default tool is memcheck.

.TP
.B
--trace-children=<yes|no> [default: no]
When enabled, \fBvalgrind\fP will trace into child processes. This is
confusing and usually not what you want, so is disabled by default.

.TP
.B
--track-fds=<yes|no> [default: no]
Track file descriptor creation and deletion and produce a summary at the
end of the program execution of file descriptors that are still in use.

.TP
.B
-v --verbose
Be more verbose. Gives extra information on various aspects of your
program, such as: the shared objects loaded, the suppressions used,
the progress of the instrumentation and execution engines, and warnings
about unusual behaviour. Repeating the flag increases the verbosity level.

.TP
.B
--version
Show the version number of the \fBvalgrind\fP core. Tools can have
their own version numbers. There is a scheme in place to ensure that
tools only execute when the core version is one they are known to work
with. This was done to minimise the chances of strange problems arising
from tool-vs-core version incompatibilities.

.SH ADDRCHECK OPTIONS

.TP
.B
--freelist-vol=<number> [default: 1000000]
When the client program releases memory using free (in C) or delete
(C++), that memory is not immediately made available for re-allocation.
Instead it is marked inaccessible and placed in a queue of freed blocks.
The purpose is to delay the point at which freed-up memory comes back
into circulation.  This increases the chance that \fBaddrcheck\fP will
be able to detect invalid accesses to blocks for some significant period
of time after they have been freed.

.RS
This flag specifies the maximum total size, in bytes, of the blocks in
the queue.  The default value is one million bytes.  Increasing this
increases the total amount of memory used by \fBaddrcheck\fP but may
detect invalid uses of freed blocks which would otherwise go undetected.
.RE

.TP
.B
--leak-check=<yes|no|summary|full> [default: summary]
Enables full, summary or no leak checking.  When full (\fBfull\fP or
\fByes\fP options) checking is performed, details on all leaked blocks
are printed after the program finishes executing.  When summary checking
is enabled, a summary of all leaked memory is printed.  When no leak
checking is performed, no leaked memory details are produced.  Disabling
leak checking can speed up your program execution.

.TP
.B
--leak-resolution=<low|med|high> [default: low]
When doing leak checking, determines how willing \fBaddrcheck\fP is to
consider different backtraces to be the same.  When set to \fBlow\fP,
the default, only the first two entries need match.  When \fBmed\fP,
four entries have to match.  When \fBhigh\fP, all entries need to match.

.TP
.B
--partial-loads-ok=<yes|no> [default: yes]
Controls how \fBaddrcheck\fP handles word (4-byte) loads from addresses
for which some bytes are addressible and others are not.  When enabled,
such loads do not elicit an address error.  Instead, \fBaddrcheck\fP
considers the bytes corresponding to the illegal addresses as undefined,
and those corresponding to legal addresses are considered defined.

.RS
When disabled, loads from partially invalid addresses are treated the
same as loads from completely invalid addresses: an illegal-address error
is issued, and the \fBaddrcheck\fP considers all bytes as invalid data.
.RE

.TP
.B
--show-reachable=<yes|no> [default: no]
When performing full leak checking, print out details of blocks that are
leaked but still reachable.  For details of what a reachable block is,
see the HTML documentation.

.TP
.B
--workaround-gcc296-bugs=<yes|no> [default: no]
When enabled, assume that reads and writes some small distance below
the stack pointer \fB%esp\fP are due to bugs in gcc 2.96, and does not
report them.  The "small distance" is 256 bytes by default.  Note that gcc
2.96 is the default compiler on some older Linux distributions (RedHat
7.X, Mandrake) and so you may well need to use this flag.  Do not use
it if you do not have to, as it can cause real errors to be overlooked.
Another option is to use a gcc/g++ which does not generate accesses below
the stack pointer.  2.95.3 seems to be a good choice in this respect.

.SH MEMCHECK OPTIONS
\fBmemcheck\fP understands the same options as \fBaddrcheck\fP, along
with the following options:

.TP
.B
--avoid-strlen-errors=<yes|no> [default: yes]
Enable or disable a heuristic for dealing with highly-optimized versions
of \fBstrlen\fP.  These versions of \fBstrlen\fP can cause spurious
errors to be reported by \fBmemcheck\fP, so it's usually a good idea to
leave this enabled.

.TP
.B
--cleanup=<yes|no> [default: yes]
\fBThis is a flag to help debug valgrind itself.  It is of no use to
end-users\fP. When enabled, various improvments are applied to the
post-instrumented intermediate code, aimed at removing redundant value
checks.

.SH CACHEGRIND OPTIONS

.TP
.B
--D1=<size>,<associativity>,<line size>
Specify the size, associativity and line size of the level 1 data cache.
All values are measured in bytes.  If this options is not specified,
the system value (as retrieved by the \fBCPUID\fP instruction) is used.

.TP
.B
--I1=<size>,<associativity>,<line size>
Specify the size, associativity and line size of the level 1 instruction
cache.  All values are measured in bytes.  If this options is not
specified, the system value (as retrieved by the \fBCPUID\fP instruction)
is used.

.TP
.B
--L2=<size>,<associativity>,<line size>
Specify the size, associativity and line size of the level 2 cache.
All values are measured in bytes.  If this options is not specified,
the system value (as retrieved by the \fBCPUID\fP instruction) is used.

.SH MASSIF OPTIONS

.TP
.B
--alloc-fn=<name>
Specify a function that allocates memory.  This is useful for functions
that are wrappers to \fBmalloc()\fP, which can fill up the context
information uselessly (and give very uninformative bands on the graph).
Functions specified will be ignored in contexts, i.e. treated as though
they were \fBmalloc()\fP.  This option can be specified multiple times
on the command line, to name multiple functions.

.TP
.B
--depth=<number> [default: 3]
Depth of call chains to present in the detailed heap information.
Increasing it will give more information, but \fBmassif\fP will run the
program more slowly, using more memory, and produce a bigger \fB.txt\fP
or \fB.hp\fP file.

.TP
.B
--format=<text|html> [default: text]
Produce the detailed heap information in text or HTML format.  The file
suffix used will be either \fB.txt\fP or \fB.html\fP.

.TP
.B
--heap=<yes|no> [default: yes]
When enabled, profile heap usage in detail.  Without it, the \fB.txt\fP
or \fB.html\fP file will be very short.

.TP
.B
--heap-admin=<number> [default: 8]
The number of admin bytes per block to use.  This can only be an
estimate of the average, since it may vary.  The allocator used
by \fBglibc\fP requires somewhere between 4 to 15 bytes per block,
depending on various factors.  It also requires admin space for freed
blocks, although \fBmassif\fP does not count this.

.TP
.B
--stacks=<yes|no> [default: yes]
When enabled, include stack(s) in the profile.  Threaded programs can
have multiple stacks.

." .SH HELGRIND OPTIONS

." .TP
." .B
." --private-stacks=<yes|no> [default: no]
." Assume thread stacks are used privately.

." .TP
." .B
." --show-last-access=<yes|some|no> [default: no]
." Show location of last word access on error.

.SH LESS FREQUENTLY USED CORE OPTIONS

.TP
.B
--alignment=<number> [default: 8]
By default \fBvalgrind\fP's malloc, realloc, etc, return 8-byte aligned
addresses. These are suitable for any accesses on x86 processors. Some
programs might however assume that malloc et al return 16- or more
aligned memory. These programs are broken and should be fixed, but if
this is impossible for whatever reason the alignment can be increased
using this parameter. The supplied value must be between 8 and 4096
inclusive, and must be a power of two.

.TP
.B
--branchpred=<yes|no> [default: no]
This option enables the generation of static branch prediction hints.
In theory this allows the real CPU to do a better job of running the
generated code, but in practice it makes almost no measurable difference.
It may have a large effect on some x86 implementations.

.TP
.B
--chain-bb=<yes|no> [default: yes]
Enables basic-block chaining.  If basic-block chaining is disabled,
the synthetic CPU returns to the scheduler after interpreting each basic
block.  With basic block chaining enabled, it can immediately proceed to
the next basic block.  This almost always results in a performance gain,
so it is enabled by default.

.TP
.B
--command-line-only=<yes|no> [default: no]
Normally, \fBvalgrind\fP will look for command-line options in the
following locations:
.RS
.TP
- The \fBvalgrind\fP command line
.TP
- The \fB\.valgrindrc\fP file in the invocation directory
.TP
- The \fB\.valgrindrc\fP file in users home directory
.TP
- The \fB$VALGRIND_OPTS\fP environment variable
.P

When this option is enabled, \fBvalgrind\fP will only look at the command
line for options.
.RE

.TP
.B
--demangle=<yes|no> [default: yes]
Enable or disable automatic demangling (decoding) of C++ names. Enabled by
default. When enabled, \fBvalgrind\fP will attempt to translate encoded
C++ procedure names back to something approaching the original. The
demangler handles symbols mangled by g++ versions 2.X and 3.X.

.TP
.B
--dump-error=<number>
After the program has exited, show gory details of the translation of
the basic block containing the \fB<number>\fP'th error context. When
used with --single-step=yes, can show the exact x86 instruction causing
an error. This is all fairly dodgy and doesn't work at all if threads
are involved.

.TP
.B
--exec=<filename>
Specify the executable to run. If this is specified, it takes precedence
over the \fByour-program\fP executable from the command-line.  If this is
not specified, \fBvalgrind\fP searches the path for the \fByour-program\fP
executable, just like a regular shell would.

.TP
.B
--input-fd=<number> [default: 0, stdin]
Specify the file descriptor to use for reading input from the user. This
is used whenever \fBvalgrind\fP needs to prompt the user for a decision.

.TP
.B
--log-fd=<number> [default: 2, stderr]
Specifies that \fBvalgrind\fP should send all of its messages to
the specified file descriptor. The default, 2, is the standard error
channel (stderr).  Note that this may interfere with the client's own
use of stderr.

.TP
.B
--log-socket=<ip-address:port-number>
Specifies that \fBvalgrind\fP should send all of its messages to the
specified port at the specified IP address. The port may be omitted,
in which case port 1500 is used. If a connection cannot be made to
the specified socket, \fBvalgrind\fP falls back to writing output to
the standard error (stderr).  This option is intended to be used in
conjunction with the \fBvalgrind-listener\fP program. For further details,
see section 2.3 of the user manual.

.TP
.B
--optimise=<yes|no> [default: yes]
When enabled, various improvements are applied to the intermediate code,
mainly aimed at allowing the simulated CPU's registers to be cached in
the real CPU's registers over several simulated instructions.

.TP
.B
--pointercheck=<yes|no> [default: yes]
When enabled, enforces client address space limits. If this option is
disabled, the client program has full and unfettered access to the part
of the address space used internally by \fBvalgrind\fP.  This can cause
unexplained crashes and false error reports, so it is best left enabled.

.TP
.B
--run-libc-freeres=<yes|no> [default: yes]
The GNU C library (libc.so), which is used by all programs, may allocate 
memory for its own uses. Usually it doesn't bother to free that memory when 
the program ends - there would be no point, since the Linux kernel reclaims 
all process resources when a process exits anyway, so it would just slow 
things down.

.RS
.PP
The glibc authors realised that this behaviour causes leak checkers,
such as \fBvalgrind\fP, to falsely report leaks in glibc, when a leak
check is done at exit.  In order to avoid this, they provided a routine
called __libc_freeres specifically to make glibc release all memory it
has allocated. The MemCheck and AddrCheck tools therefore try and run
__libc_freeres at exit.

.PP
Unfortunately, in some versions of glibc, __libc_freeres is sufficiently
buggy to cause segmentation faults. This is particularly noticeable on
Red Hat 7.1. So this flag is provided in order to inhibit the run of
__libc_freeres. If your program seems to run fine on \fBvalgrind\fP, but
segfaults at exit, you may find that --run-libc-freeres=no fixes that,
although at the cost of possibly falsely reporting space leaks in libc.so.
.RE

.TP
.B
--show-below-main=<yes|no> [default: no]
When enabled, this option causes full stack backtraces to be emited,
including the part before \fBmain\fP in your program (subject to the
\fB--num-callers\fP option.)  When disabled, only the part of the stack
backtrace up to and including main is printed.

.TP
.B
--single-step=<yes|no> [default: no]
When enabled, each x86 insn is translated separately into instrumented
code.  When disabled, translation is done on a per-basic-block basis,
giving much better translations. This is needed when running
\fBvalgrind\fP under \fBvalgrind\fP.

.TP
.B
--time-stamp=<yes|no> [default: no]
When enabled, a time-stamp is added to all log messages.

.TP
.B
--weird-hacks=hack1,hack2,\.\.\.
Pass miscellaneous hints to \fBvalgrind\fP which slightly modify the
simulated behaviour in nonstandard or dangerous ways, possibly to help
the simulation of strange features. By default no hacks are enabled. Use
with caution!  Currently known hacks are:

.RS
.TP
.B
- lax-ioctls
If \fBvalgrind\fP encounters an \fBioctl\fP that it doesn't understand,
it normally prints a warning message before continuing.  Specifying the
lax-ioctls hack tells \fBvalgrind\fP to be very lax about ioctl handling
and assume that unknown ioctls just behave correctly.
.TP
.B
- ioctl-mmap
Tell \fBvalgrind\fP to search for new memory mappings after an unknown
\fBioctl\fP call.
.RE

.SH CORE DEBUGGING OPTIONS

.TP
.B
--profile=<yes|no> [default: no]
When enabled, does crude internal profiling of \fBvalgrind\fP itself. This
is not for profiling your programs. Rather it is to allow the developers
to assess where \fBvalgrind\fP is spending its time. The tools must be
built for profiling for this to work.

.TP
.B
--sanity-level=<number> [default: 1]
Set the level of sanity checking to perform. This is used for debugging
\fBvalgrind\fP. Setting this to 2 or higher can cause more internal
sanity checks to be performed, but can slow your program down
appreciably. Setting this to 0 disables sanity checks.

.TP
.B
--trace-codegen=<bitmask>
Produce lots of output showing exactly how \fBvalgrind\fP is translating
each basic block.  The argument to this option is a 5-bit wide bitmask.
Each bit refers to a specific feature to trace.  If the bit is 1, the
feature is traced.  If it is 0, the feature is not traced.

.RS
The traced features are:
.TP
Bit 1: basic-block disassembly
.TP
Bit 2: optimization phase
.TP
Bit 3: tool instrumentation
.TP
Bit 4: register allocation
.TP
Bit 5: final code generation
.RE

.TP
.B
--trace-malloc=<yes|no> [default: no]
Enable or disable tracing of malloc, free and other memory-manager calls.

.TP
.B
--trace-redir=<yes|no> [default: no]
Enable or disable tracing of function redirection.

.TP
.B
--trace-sched=<yes|no> [default: no]
Enable or disable tracing of thread scheduling events.

.TP
.B
--trace-signals=<yes|no> [default: no]
Enable or disable tracing of signal handling.

.TP
.B
--trace-syscalls=<yes|no> [default: no]
Enable or disable tracing of system call intercepts.

.TP
.B
--trace-symtab=<yes|no> [default: no]
Enable or disable tracing of symbol table reading.

.SH SEE ALSO
/usr/share/doc/\fBvalgrind\fP/html/manual.html

.SH AUTHOR
This manpage has been written by Andres Roldan <aroldan@debian.org>
for the Debian Project, but can be used for any other distribution.
Updated, rearranged and expanded by Robert Walsh <rjwalsh@durables.org>
for the 2.4.0 release.
