1 usage
: valgrind
[options
] prog
-and
-args
3 tool
-selection option
, with default in
[ ]:
4 --tool
=<name> use the Valgrind tool named
<name> [memcheck
]
6 basic user options
for all Valgrind tools
, with defaults in
[ ]:
7 -h
--help
show this message
8 --help
-debug
show this message
, plus debugging options
9 --help
-dyn
-options
show the dynamically changeable options
10 --version
show version
11 -q
--quiet run silently
; only print error msgs
12 -v
--verbose be more verbose
-- show misc extra
info
13 --trace-children
=no|yes Valgrind
-ise child processes
(follow execve
)?
[no
]
14 --trace-children
-skip
=patt1
,patt2
,... specifies a list of executables
15 that
--trace-children
=yes should not
trace into
16 --trace-children
-skip
-by
-arg=patt1
,patt2
,... same as
--trace-children
-skip
=
17 but check the argv
[] entries
for children
, rather
18 than the exe
name, to make a follow
/no
-follow decision
19 --child
-silent
-after
-fork
=no|yes omit child output between fork
& exec?
[no
]
20 --vgdb
=no|yes|full activate gdbserver?
[yes
]
21 full is slower but provides precise watchpoint
/step
22 --vgdb
-error
=<number
> invoke gdbserver after
<number
> errors
[999999999]
23 to
get started quickly
, use
--vgdb
-error
=0
24 and follow the
on-screen directions
25 --vgdb
-stop
-at
=event1
,event2
,... invoke gdbserver
for given events
[none]
26 where event is one of
:
27 startup exit valgrindabexit all
none
28 --track
-fds
=no|yes|all track open file descriptors?
[no
]
29 all includes reporting stdin
, stdout and stderr
30 --time
-stamp
=no|yes add timestamps to
log messages?
[no
]
31 --log-fd
=<number
> log messages to file descriptor
[2=stderr
]
32 --log-file
=<file
> log messages to
<file
>
33 --log-socket
=ipaddr
:port
log messages to socket ipaddr
:port
35 user options
for Valgrind tools that
report errors
:
36 --xml
=yes emit error output in XML
(some tools only
)
37 --xml
-fd
=<number
> XML output to file descriptor
38 --xml
-file
=<file
> XML output to
<file
>
39 --xml
-socket
=ipaddr
:port XML output to socket ipaddr
:port
40 --xml
-user
-comment
=STR copy STR verbatim into XML output
41 --demangle
=no|yes automatically demangle C
++ names?
[yes
]
42 --num
-callers
=<number
> show <number
> callers in stack traces
[12]
43 --error
-limit=no|yes stop showing new errors
if too many?
[yes
]
44 --exit
-on-first
-error
=no|yes exit code
on the first error found?
[no
]
45 --error
-exitcode
=<number
> exit code to
return if errors found
[0=disable
]
46 --error
-markers
=<begin
>,<end
> add lines with begin
/end markers before
/after
47 each error output in plain
text mode [none]
48 --show-error
-list
=no|yes
show detected errors list and
49 suppression counts at exit
[no
]
50 -s same as
--show-error
-list
=yes
51 --keep
-debuginfo
=no|yes Keep symbols etc
for unloaded code
[no
]
52 This allows saved stack traces
(e.g. memory leaks
)
53 to
include file
/line
info for code that has been
54 dlclose
'd (or similar)
55 --show-below-main=no|yes continue stack traces below main() [no]
56 --default-suppressions=yes|no
57 load default suppressions [yes]
58 --suppressions=<filename> suppress errors described in <filename>
59 --gen-suppressions=no|yes|all print suppressions for errors? [no]
60 --input-fd=<number> file descriptor for input [0=stdin]
61 --dsymutil=no|yes run dsymutil on Mac OS X when helpful? [yes]
62 --max-stackframe=<number> assume stack switch for SP changes larger
63 than <number> bytes [2000000]
64 --main-stacksize=<number> set size of main thread's stack
(in bytes
)
65 [min(max(current
'ulimit' value
,1MB
),16MB
)]
67 user options
for Valgrind tools that replace malloc
:
68 --alignment
=<number
> set minimum alignment of heap allocations
[not used by this tool
]
69 --redzone
-size
=<number
> set minimum size of redzones added before
/after
70 heap blocks
(in bytes
).
[not used by this tool
]
71 --xtree
-memory
=none|allocs|full profile heap memory in an xtree
[none]
72 and produces a
report at the end of the execution
73 none: no profiling
, allocs
: current allocated
74 size
/blocks
, full
: profile current and cumulative
75 allocated size
/blocks and freed size
/blocks.
76 --xtree
-memory
-file
=<file
> xtree memory
report file
[xtmemory.kcg.
%p
]
78 uncommon user options
for all Valgrind tools
:
79 --fullpath
-after
= (with nothing after the
'=')
80 show full source paths in
call stacks
81 --fullpath
-after
=string like
--fullpath
-after
=, but only
show the
82 part of the path after
'string'. Allows removal
83 of path prefixes. Use this flag multiple times
84 to specify a
set of prefixes to remove.
85 --extra
-debuginfo
-path
=path absolute path to search
for additional
86 debug symbols
, in addition to existing default
87 well known search paths.
88 --debuginfo
-server
=ipaddr
:port also query this server
89 (valgrind
-di
-server
) for debug symbols
90 --allow
-mismatched
-debuginfo
=no|yes
[no
]
91 for the above two flags only
, accept debuginfo
92 objects that don
't "match" the main object
93 --smc-check=none|stack|all|all-non-file [all-non-file]
94 checks for self-modifying code: none, only for
95 code found in stacks, for all code, or for all
96 code except that from file-backed mappings
97 --read-inline-info=yes|no read debug info about inlined function calls
98 and use it to do better stack traces.
99 [yes] on Linux/Android/Solaris for the tools
100 Memcheck/Massif/Helgrind/DRD only.
101 [no] for all other tools and platforms.
102 --read-var-info=yes|no read debug info on stack and global variables
103 and use it to print better error messages in
104 tools that make use of it (Memcheck, Helgrind,
106 --vgdb-poll=<number> gdbserver poll max every <number> basic blocks [5000]
107 --vgdb-shadow-registers=no|yes let gdb see the shadow registers [no]
108 --vgdb-prefix=<prefix> prefix for vgdb FIFOs [.../vgdb-pipe]
109 --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]
110 --run-cxx-freeres=no|yes free up libstdc++ memory at exit on Linux
112 --sim-hints=hint1,hint2,... activate unusual sim behaviours [none]
113 where hint is one of:
114 lax-ioctls lax-doors fuse-compatible enable-outer
115 no-inner-prefix no-nptl-pthread-stackcache fallback-llsc none
116 --fair-sched=no|yes|try schedule threads fairly on multicore systems [no]
117 --kernel-variant=variant1,variant2,...
118 handle non-standard kernel variants [none]
119 where variant is one of:
120 bproc android-no-hw-tls
121 android-gpu-sgx5xx android-gpu-adreno3xx none
122 --merge-recursive-frames=<number> merge frames between identical
123 program counters in max <number> frames) [0]
124 --num-transtab-sectors=<number> size of translated code cache [32]
125 more sectors may increase performance, but use more memory.
126 --avg-transtab-entry-size=<number> avg size in bytes of a translated
127 basic block [0, meaning use tool provided default]
128 --aspace-minaddr=0xPP avoid mapping memory below 0xPP [guessed]
129 --valgrind-stacksize=<number> size of valgrind (host) thread's stack
131 --show-emwarns
=no|yes
show warnings about emulation limits?
[no
]
132 --require
-text-symbol
=:sonamepattern
:symbolpattern abort run
if the
133 stated shared object doesn
't have the stated
134 text symbol. Patterns can contain ? and *.
135 --soname-synonyms=syn1=pattern1,syn2=pattern2,... synonym soname
136 specify patterns for function wrapping or replacement.
137 To use a non-libc malloc library that is
138 in the main exe: --soname-synonyms=somalloc=NONE
139 in libxyzzy.so: --soname-synonyms=somalloc=libxyzzy.so
140 --sigill-diagnostics=yes|no warn about illegal instructions? [yes]
141 --unw-stack-scan-thresh=<number> Enable stack-scan unwind if fewer
142 than <number> good frames found [0, meaning "disabled"]
143 NOTE: stack scanning is only available on arm-linux.
144 --unw-stack-scan-frames=<number> Max number of frames that can be
145 recovered by stack scanning [5]
146 --resync-filter=no|yes|verbose [yes on MacOS, no on other OSes]
147 attempt to avoid expensive address-space-resync operations
148 --max-threads=<number> maximum number of threads that valgrind can
151 user options for Nulgrind:
154 debugging options for all Valgrind tools:
155 -d show verbose debugging output
156 --stats=no|yes show tool and core statistics [no]
157 --sanity-level=<number> level of sanity checking to do [1]
158 --trace-flags=<XXXXXXXX> show generated code? (X = 0|1) [00000000]
159 --profile-flags=<XXXXXXXX> ditto, but for profiling (X = 0|1) [00000000]
160 --profile-interval=<number> show profile every <number> event checks
161 [0, meaning only at the end of the run]
162 --trace-notbelow=<number> only show BBs above <number> [999999999]
163 --trace-notabove=<number> only show BBs below <number> [0]
164 --trace-syscalls=no|yes show all system calls? [no]
165 --trace-signals=no|yes show signal handling details? [no]
166 --trace-symtab=no|yes show symbol table details? [no]
167 --trace-symtab-patt=<patt> limit debuginfo tracing to obj name <patt>
168 --trace-cfi=no|yes show call-frame-info details? [no]
169 --debug-dump=syms mimic /usr/bin/readelf --syms
170 --debug-dump=line mimic /usr/bin/readelf --debug-dump=line
171 --debug-dump=frames mimic /usr/bin/readelf --debug-dump=frames
172 --trace-redir=no|yes show redirection details? [no]
173 --trace-sched=no|yes show thread scheduler details? [no]
174 --profile-heap=no|yes profile Valgrind's own space use
175 --core
-redzone
-size
=<number
> set minimum size of redzones added before
/after
176 heap blocks allocated
for Valgrind internal use
(in bytes
) [4]
177 --wait
-for-gdb
=yes|no
pause on startup to wait
for gdb attach
178 --sym
-offsets
=yes|no
show syms in form
'name+offset'?
[no
]
179 --progress
-interval
=<number
> report progress
every <number
>
180 CPU
seconds [0, meaning disabled
]
181 --command
-line
-only
=no|yes only use command line options
[no
]
183 Vex options
for all Valgrind tools
:
184 --vex
-iropt
-verbosity
=<0.
.9> [0]
185 --vex
-iropt
-level
=<0.
.2> [2]
186 --vex
-iropt
-unroll
-thresh
=<0.
.400> [120]
187 --vex
-guest
-max-insns
=<1.
.100> [50]
188 --vex
-guest
-chase
=no|yes
[yes
]
189 Precise exception control. Possible
values for 'mode' are as follows
190 and specify the minimum
set of registers guaranteed to be correct
191 immediately prior to memory access instructions
:
192 sp
-at
-mem
-access stack pointer only
193 unwindregs
-at
-mem
-access registers needed
for stack unwinding
194 allregs
-at
-mem
-access all registers
195 allregs
-at
-each
-insn all registers are always correct
196 Default value
for all
3 following flags is
[unwindregs
-at
-mem
-access
].
197 --vex
-iropt
-register
-updates
=mode setting to use by default
198 --px
-default
=mode synonym
for --vex
-iropt
-register
-updates
199 --px
-file
-backed
=mode optional setting
for file
-backed
(non
-JIT
) code
200 Tracing and profile control
:
201 --trace-flags and
--profile
-flags
values (omit the middle space
):
202 1000 0000 show conversion into IR
203 0100 0000 show after initial opt
204 0010 0000 show after instrumentation
205 0001 0000 show after second opt
206 0000 1000 show after tree building
207 0000 0100 show selecting insns
208 0000 0010 show after reg
-alloc
209 0000 0001 show final assembly
210 0000 0000 show summary profile only
211 (Nb
: you need
--trace-notbelow and
/or
--trace-notabove
212 with
--trace-flags
for full details
)
213 --vex
-regalloc
-version
=2|
3 [3]
215 debugging options
for Valgrind tools that
report errors
216 --dump
-error
=<number
> show translation
for basic block associated
217 with
<number
>'th error context [0=show none]
219 debugging options for Valgrind tools that replace malloc:
220 --trace-malloc=no|yes show client malloc details? [no]
221 --xtree-compress-strings=no|yes compress strings in xtree callgrind format [yes]
223 debugging options for Nulgrind:
226 Extra options read from ~/.valgrindrc, $VALGRIND_OPTS, ./.valgrindrc
228 Nulgrind is Copyright (C) 2002-2017, and GNU GPL'd
, by Nicholas Nethercote.
229 Valgrind is Copyright
(C
) 2000-2017, and GNU GPL
'd, by Julian Seward et al.
230 LibVEX is Copyright (C) 2004-2017, and GNU GPL'd
, by OpenWorks LLP et al.
232 Bug reports
, feedback
, admiration
, abuse
, etc
, to
: www.valgrind.org.