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