1VALGRIND(1)                        valgrind                        VALGRIND(1)
2
3
4

NAME

6       valgrind - a suite of tools for debugging and profiling programs
7

SYNOPSIS

9       valgrind [valgrind-options] [your-program] [your-program-options]
10

DESCRIPTION

12       Valgrind is a flexible program for debugging and profiling Linux
13       executables. It consists of a core, which provides a synthetic CPU in
14       software, and a series of debugging and profiling tools. The
15       architecture is modular, so that new tools can be created easily and
16       without disturbing the existing structure.
17
18       Some of the options described below work with all Valgrind tools, and
19       some only work with a few or one. The section MEMCHECK OPTIONS and
20       those below it describe tool-specific options.
21
22       This manual page covers only basic usage and options. For more
23       comprehensive information, please see the HTML documentation on your
24       system: $INSTALL/share/doc/valgrind/html/index.html, or online:
25       http://www.valgrind.org/docs/manual/index.html.
26

TOOL SELECTION OPTIONS

28       The single most important option.
29
30       --tool=<toolname> [default: memcheck]
31           Run the Valgrind tool called toolname, e.g. memcheck, cachegrind,
32           callgrind, helgrind, drd, massif, dhat, lackey, none, exp-bbv, etc.
33

BASIC OPTIONS

35       These options work with all tools.
36
37       -h --help
38           Show help for all options, both for the core and for the selected
39           tool. If the option is repeated it is equivalent to giving
40           --help-debug.
41
42       --help-debug
43           Same as --help, but also lists debugging options which usually are
44           only of use to Valgrind's developers.
45
46       --version
47           Show the version number of the Valgrind core. Tools can have their
48           own version numbers. There is a scheme in place to ensure that
49           tools only execute when the core version is one they are known to
50           work with. This was done to minimise the chances of strange
51           problems arising from tool-vs-core version incompatibilities.
52
53       -q, --quiet
54           Run silently, and only print error messages. Useful if you are
55           running regression tests or have some other automated test
56           machinery.
57
58       -v, --verbose
59           Be more verbose. Gives extra information on various aspects of your
60           program, such as: the shared objects loaded, the suppressions used,
61           the progress of the instrumentation and execution engines, and
62           warnings about unusual behaviour. Repeating the option increases
63           the verbosity level.
64
65       --trace-children=<yes|no> [default: no]
66           When enabled, Valgrind will trace into sub-processes initiated via
67           the exec system call. This is necessary for multi-process programs.
68
69           Note that Valgrind does trace into the child of a fork (it would be
70           difficult not to, since fork makes an identical copy of a process),
71           so this option is arguably badly named. However, most children of
72           fork calls immediately call exec anyway.
73
74       --trace-children-skip=patt1,patt2,...
75           This option only has an effect when --trace-children=yes is
76           specified. It allows for some children to be skipped. The option
77           takes a comma separated list of patterns for the names of child
78           executables that Valgrind should not trace into. Patterns may
79           include the metacharacters ?  and *, which have the usual meaning.
80
81           This can be useful for pruning uninteresting branches from a tree
82           of processes being run on Valgrind. But you should be careful when
83           using it. When Valgrind skips tracing into an executable, it
84           doesn't just skip tracing that executable, it also skips tracing
85           any of that executable's child processes. In other words, the flag
86           doesn't merely cause tracing to stop at the specified executables
87           -- it skips tracing of entire process subtrees rooted at any of the
88           specified executables.
89
90       --trace-children-skip-by-arg=patt1,patt2,...
91           This is the same as --trace-children-skip, with one difference: the
92           decision as to whether to trace into a child process is made by
93           examining the arguments to the child process, rather than the name
94           of its executable.
95
96       --child-silent-after-fork=<yes|no> [default: no]
97           When enabled, Valgrind will not show any debugging or logging
98           output for the child process resulting from a fork call. This can
99           make the output less confusing (although more misleading) when
100           dealing with processes that create children. It is particularly
101           useful in conjunction with --trace-children=. Use of this option is
102           also strongly recommended if you are requesting XML output
103           (--xml=yes), since otherwise the XML from child and parent may
104           become mixed up, which usually makes it useless.
105
106       --vgdb=<no|yes|full> [default: yes]
107           Valgrind will provide "gdbserver" functionality when --vgdb=yes or
108           --vgdb=full is specified. This allows an external GNU GDB debugger
109           to control and debug your program when it runs on Valgrind.
110           --vgdb=full incurs significant performance overheads, but provides
111           more precise breakpoints and watchpoints. See Debugging your
112           program using Valgrind's gdbserver and GDB for a detailed
113           description.
114
115           If the embedded gdbserver is enabled but no gdb is currently being
116           used, the vgdb command line utility can send "monitor commands" to
117           Valgrind from a shell. The Valgrind core provides a set of Valgrind
118           monitor commands. A tool can optionally provide tool specific
119           monitor commands, which are documented in the tool specific
120           chapter.
121
122       --vgdb-error=<number> [default: 999999999]
123           Use this option when the Valgrind gdbserver is enabled with
124           --vgdb=yes or --vgdb=full. Tools that report errors will wait for
125           "number" errors to be reported before freezing the program and
126           waiting for you to connect with GDB. It follows that a value of
127           zero will cause the gdbserver to be started before your program is
128           executed. This is typically used to insert GDB breakpoints before
129           execution, and also works with tools that do not report errors,
130           such as Massif.
131
132       --vgdb-stop-at=<set> [default: none]
133           Use this option when the Valgrind gdbserver is enabled with
134           --vgdb=yes or --vgdb=full. The Valgrind gdbserver will be invoked
135           for each error after --vgdb-error have been reported. You can
136           additionally ask the Valgrind gdbserver to be invoked for other
137           events, specified in one of the following ways:
138
139           •   a comma separated list of one or more of startup exit abexit
140               valgrindabexit.
141
142               The values startup exit valgrindabexit respectively indicate to
143               invoke gdbserver before your program is executed, after the
144               last instruction of your program, on Valgrind abnormal exit
145               (e.g. internal error, out of memory, ...).
146
147               The option abexit is similar to exit but tells to invoke
148               gdbserver only when your application exits abnormally (i.e.
149               with an exit code different of 0).
150
151               Note: startup and --vgdb-error=0 will both cause Valgrind
152               gdbserver to be invoked before your program is executed. The
153               --vgdb-error=0 will in addition cause your program to stop on
154               all subsequent errors.
155
156all to specify the complete set. It is equivalent to
157               --vgdb-stop-at=startup,exit,abexit,valgrindabexit.
158
159none for the empty set.
160
161       --track-fds=<yes|no|all> [default: no]
162           When enabled, Valgrind will print out a list of open file
163           descriptors on exit or on request, via the gdbserver monitor
164           command v.info open_fds. Along with each file descriptor is printed
165           a stack backtrace of where the file was opened and any details
166           relating to the file descriptor such as the file name or socket
167           details. Use all to include reporting on stdin, stdout and stderr.
168
169       --time-stamp=<yes|no> [default: no]
170           When enabled, each message is preceded with an indication of the
171           elapsed wallclock time since startup, expressed as days, hours,
172           minutes, seconds and milliseconds.
173
174       --log-fd=<number> [default: 2, stderr]
175           Specifies that Valgrind should send all of its messages to the
176           specified file descriptor. The default, 2, is the standard error
177           channel (stderr). Note that this may interfere with the client's
178           own use of stderr, as Valgrind's output will be interleaved with
179           any output that the client sends to stderr.
180
181       --log-file=<filename>
182           Specifies that Valgrind should send all of its messages to the
183           specified file. If the file name is empty, it causes an abort.
184           There are three special format specifiers that can be used in the
185           file name.
186
187           %p is replaced with the current process ID. This is very useful for
188           program that invoke multiple processes. WARNING: If you use
189           --trace-children=yes and your program invokes multiple processes OR
190           your program forks without calling exec afterwards, and you don't
191           use this specifier (or the %q specifier below), the Valgrind output
192           from all those processes will go into one file, possibly jumbled
193           up, and possibly incomplete. Note: If the program forks and calls
194           exec afterwards, Valgrind output of the child from the period
195           between fork and exec will be lost. Fortunately this gap is really
196           tiny for most programs; and modern programs use posix_spawn anyway.
197
198           %n is replaced with a file sequence number unique for this process.
199           This is useful for processes that produces several files from the
200           same filename template.
201
202           %q{FOO} is replaced with the contents of the environment variable
203           FOO. If the {FOO} part is malformed, it causes an abort. This
204           specifier is rarely needed, but very useful in certain
205           circumstances (eg. when running MPI programs). The idea is that you
206           specify a variable which will be set differently for each process
207           in the job, for example BPROC_RANK or whatever is applicable in
208           your MPI setup. If the named environment variable is not set, it
209           causes an abort. Note that in some shells, the { and } characters
210           may need to be escaped with a backslash.
211
212           %% is replaced with %.
213
214           If an % is followed by any other character, it causes an abort.
215
216           If the file name specifies a relative file name, it is put in the
217           program's initial working directory: this is the current directory
218           when the program started its execution after the fork or after the
219           exec. If it specifies an absolute file name (ie. starts with '/')
220           then it is put there.
221
222       --log-socket=<ip-address:port-number>
223           Specifies that Valgrind should send all of its messages to the
224           specified port at the specified IP address. The port may be
225           omitted, in which case port 1500 is used. If a connection cannot be
226           made to the specified socket, Valgrind falls back to writing output
227           to the standard error (stderr). This option is intended to be used
228           in conjunction with the valgrind-listener program. For further
229           details, see the commentary in the manual.
230
231       --enable-debuginfod=<no|yes> [default: yes]
232           When enabled Valgrind will attempt to download missing debuginfo
233           from debuginfod servers if space-separated server URLs are present
234           in the $DEBUGINFOD_URLS environment variable. This option is
235           supported on Linux only.
236
238       These options are used by all tools that can report errors, e.g.
239       Memcheck, but not Cachegrind.
240
241       --xml=<yes|no> [default: no]
242           When enabled, the important parts of the output (e.g. tool error
243           messages) will be in XML format rather than plain text.
244           Furthermore, the XML output will be sent to a different output
245           channel than the plain text output. Therefore, you also must use
246           one of --xml-fd, --xml-file or --xml-socket to specify where the
247           XML is to be sent.
248
249           Less important messages will still be printed in plain text, but
250           because the XML output and plain text output are sent to different
251           output channels (the destination of the plain text output is still
252           controlled by --log-fd, --log-file and --log-socket) this should
253           not cause problems.
254
255           This option is aimed at making life easier for tools that consume
256           Valgrind's output as input, such as GUI front ends. Currently this
257           option works with Memcheck, Helgrind and DRD. The output format is
258           specified in the file docs/internals/xml-output-protocol4.txt in
259           the source tree for Valgrind 3.5.0 or later.
260
261           The recommended options for a GUI to pass, when requesting XML
262           output, are: --xml=yes to enable XML output, --xml-file to send the
263           XML output to a (presumably GUI-selected) file, --log-file to send
264           the plain text output to a second GUI-selected file,
265           --child-silent-after-fork=yes, and -q to restrict the plain text
266           output to critical error messages created by Valgrind itself. For
267           example, failure to read a specified suppressions file counts as a
268           critical error message. In this way, for a successful run the text
269           output file will be empty. But if it isn't empty, then it will
270           contain important information which the GUI user should be made
271           aware of.
272
273       --xml-fd=<number> [default: -1, disabled]
274           Specifies that Valgrind should send its XML output to the specified
275           file descriptor. It must be used in conjunction with --xml=yes.
276
277       --xml-file=<filename>
278           Specifies that Valgrind should send its XML output to the specified
279           file. It must be used in conjunction with --xml=yes. Any %p or %q
280           sequences appearing in the filename are expanded in exactly the
281           same way as they are for --log-file. See the description of --log-
282           file for details.
283
284       --xml-socket=<ip-address:port-number>
285           Specifies that Valgrind should send its XML output the specified
286           port at the specified IP address. It must be used in conjunction
287           with --xml=yes. The form of the argument is the same as that used
288           by --log-socket. See the description of --log-socket for further
289           details.
290
291       --xml-user-comment=<string>
292           Embeds an extra user comment string at the start of the XML output.
293           Only works when --xml=yes is specified; ignored otherwise.
294
295       --demangle=<yes|no> [default: yes]
296           Enable/disable automatic demangling (decoding) of C++ names.
297           Enabled by default. When enabled, Valgrind will attempt to
298           translate encoded C++ names back to something approaching the
299           original. The demangler handles symbols mangled by g++ versions
300           2.X, 3.X and 4.X.
301
302           An important fact about demangling is that function names mentioned
303           in suppressions files should be in their mangled form. Valgrind
304           does not demangle function names when searching for applicable
305           suppressions, because to do otherwise would make suppression file
306           contents dependent on the state of Valgrind's demangling machinery,
307           and also slow down suppression matching.
308
309       --num-callers=<number> [default: 12]
310           Specifies the maximum number of entries shown in stack traces that
311           identify program locations. Note that errors are commoned up using
312           only the top four function locations (the place in the current
313           function, and that of its three immediate callers). So this doesn't
314           affect the total number of errors reported.
315
316           The maximum value for this is 500. Note that higher settings will
317           make Valgrind run a bit more slowly and take a bit more memory, but
318           can be useful when working with programs with deeply-nested call
319           chains.
320
321       --unw-stack-scan-thresh=<number> [default: 0] ,
322       --unw-stack-scan-frames=<number> [default: 5]
323           Stack-scanning support is available only on ARM targets.
324
325           These flags enable and control stack unwinding by stack scanning.
326           When the normal stack unwinding mechanisms -- usage of Dwarf CFI
327           records, and frame-pointer following -- fail, stack scanning may be
328           able to recover a stack trace.
329
330           Note that stack scanning is an imprecise, heuristic mechanism that
331           may give very misleading results, or none at all. It should be used
332           only in emergencies, when normal unwinding fails, and it is
333           important to nevertheless have stack traces.
334
335           Stack scanning is a simple technique: the unwinder reads words from
336           the stack, and tries to guess which of them might be return
337           addresses, by checking to see if they point just after ARM or Thumb
338           call instructions. If so, the word is added to the backtrace.
339
340           The main danger occurs when a function call returns, leaving its
341           return address exposed, and a new function is called, but the new
342           function does not overwrite the old address. The result of this is
343           that the backtrace may contain entries for functions which have
344           already returned, and so be very confusing.
345
346           A second limitation of this implementation is that it will scan
347           only the page (4KB, normally) containing the starting stack
348           pointer. If the stack frames are large, this may result in only a
349           few (or not even any) being present in the trace. Also, if you are
350           unlucky and have an initial stack pointer near the end of its
351           containing page, the scan may miss all interesting frames.
352
353           By default stack scanning is disabled. The normal use case is to
354           ask for it when a stack trace would otherwise be very short. So, to
355           enable it, use --unw-stack-scan-thresh=number. This requests
356           Valgrind to try using stack scanning to "extend" stack traces which
357           contain fewer than number frames.
358
359           If stack scanning does take place, it will only generate at most
360           the number of frames specified by --unw-stack-scan-frames.
361           Typically, stack scanning generates so many garbage entries that
362           this value is set to a low value (5) by default. In no case will a
363           stack trace larger than the value specified by --num-callers be
364           created.
365
366       --error-limit=<yes|no> [default: yes]
367           When enabled, Valgrind stops reporting errors after 10,000,000 in
368           total, or 1,000 different ones, have been seen. This is to stop the
369           error tracking machinery from becoming a huge performance overhead
370           in programs with many errors.
371
372       --error-exitcode=<number> [default: 0]
373           Specifies an alternative exit code to return if Valgrind reported
374           any errors in the run. When set to the default value (zero), the
375           return value from Valgrind will always be the return value of the
376           process being simulated. When set to a nonzero value, that value is
377           returned instead, if Valgrind detects any errors. This is useful
378           for using Valgrind as part of an automated test suite, since it
379           makes it easy to detect test cases for which Valgrind has reported
380           errors, just by inspecting return codes. When set to a nonzero
381           value and Valgrind detects no error, the return value of Valgrind
382           will be the return value of the program being simulated.
383
384       --exit-on-first-error=<yes|no> [default: no]
385           If this option is enabled, Valgrind exits on the first error. A
386           nonzero exit value must be defined using --error-exitcode option.
387           Useful if you are running regression tests or have some other
388           automated test machinery.
389
390       --error-markers=<begin>,<end> [default: none]
391           When errors are output as plain text (i.e. XML not used),
392           --error-markers instructs to output a line containing the begin
393           (end) string before (after) each error.
394
395           Such marker lines facilitate searching for errors and/or extracting
396           errors in an output file that contain valgrind errors mixed with
397           the program output.
398
399           Note that empty markers are accepted. So, only using a begin (or an
400           end) marker is possible.
401
402       --show-error-list=no|yes [default: no]
403           If this option is enabled, for tools that report errors, valgrind
404           will show the list of detected errors and the list of used
405           suppressions at exit.
406
407           Note that at verbosity 2 and above, valgrind automatically shows
408           the list of detected errors and the list of used suppressions at
409           exit, unless --show-error-list=no is selected.
410
411       -s
412           Specifying -s is equivalent to --show-error-list=yes.
413
414       --sigill-diagnostics=<yes|no> [default: yes]
415           Enable/disable printing of illegal instruction diagnostics. Enabled
416           by default, but defaults to disabled when --quiet is given. The
417           default can always be explicitly overridden by giving this option.
418
419           When enabled, a warning message will be printed, along with some
420           diagnostics, whenever an instruction is encountered that Valgrind
421           cannot decode or translate, before the program is given a SIGILL
422           signal. Often an illegal instruction indicates a bug in the program
423           or missing support for the particular instruction in Valgrind. But
424           some programs do deliberately try to execute an instruction that
425           might be missing and trap the SIGILL signal to detect processor
426           features. Using this flag makes it possible to avoid the diagnostic
427           output that you would otherwise get in such cases.
428
429       --keep-debuginfo=<yes|no> [default: no]
430           When enabled, keep ("archive") symbols and all other debuginfo for
431           unloaded code. This allows saved stack traces to include file/line
432           info for code that has been dlclose'd (or similar). Be careful with
433           this, since it can lead to unbounded memory use for programs which
434           repeatedly load and unload shared objects.
435
436           Some tools and some functionalities have only limited support for
437           archived debug info. Memcheck fully supports it. Generally, tools
438           that report errors can use archived debug info to show the error
439           stack traces. The known limitations are: Helgrind's past access
440           stack trace of a race condition is does not use archived debug
441           info. Massif (and more generally the xtree Massif output format)
442           does not make use of archived debug info. Only Memcheck has been
443           (somewhat) tested with --keep-debuginfo=yes, so other tools may
444           have unknown limitations.
445
446       --show-below-main=<yes|no> [default: no]
447           By default, stack traces for errors do not show any functions that
448           appear beneath main because most of the time it's uninteresting C
449           library stuff and/or gobbledygook. Alternatively, if main is not
450           present in the stack trace, stack traces will not show any
451           functions below main-like functions such as glibc's
452           __libc_start_main. Furthermore, if main-like functions are present
453           in the trace, they are normalised as (below main), in order to make
454           the output more deterministic.
455
456           If this option is enabled, all stack trace entries will be shown
457           and main-like functions will not be normalised.
458
459       --fullpath-after=<string> [default: don't show source paths]
460           By default Valgrind only shows the filenames in stack traces, but
461           not full paths to source files. When using Valgrind in large
462           projects where the sources reside in multiple different
463           directories, this can be inconvenient.  --fullpath-after provides a
464           flexible solution to this problem. When this option is present, the
465           path to each source file is shown, with the following all-important
466           caveat: if string is found in the path, then the path up to and
467           including string is omitted, else the path is shown unmodified.
468           Note that string is not required to be a prefix of the path.
469
470           For example, consider a file named
471           /home/janedoe/blah/src/foo/bar/xyzzy.c. Specifying
472           --fullpath-after=/home/janedoe/blah/src/ will cause Valgrind to
473           show the name as foo/bar/xyzzy.c.
474
475           Because the string is not required to be a prefix,
476           --fullpath-after=src/ will produce the same output. This is useful
477           when the path contains arbitrary machine-generated characters. For
478           example, the path /my/build/dir/C32A1B47/blah/src/foo/xyzzy can be
479           pruned to foo/xyzzy using --fullpath-after=/blah/src/.
480
481           If you simply want to see the full path, just specify an empty
482           string: --fullpath-after=. This isn't a special case, merely a
483           logical consequence of the above rules.
484
485           Finally, you can use --fullpath-after multiple times. Any
486           appearance of it causes Valgrind to switch to producing full paths
487           and applying the above filtering rule. Each produced path is
488           compared against all the --fullpath-after-specified strings, in the
489           order specified. The first string to match causes the path to be
490           truncated as described above. If none match, the full path is
491           shown. This facilitates chopping off prefixes when the sources are
492           drawn from a number of unrelated directories.
493
494       --extra-debuginfo-path=<path> [default: undefined and unused]
495           By default Valgrind searches in several well-known paths for debug
496           objects, such as /usr/lib/debug/.
497
498           However, there may be scenarios where you may wish to put debug
499           objects at an arbitrary location, such as external storage when
500           running Valgrind on a mobile device with limited local storage.
501           Another example might be a situation where you do not have
502           permission to install debug object packages on the system where you
503           are running Valgrind.
504
505           In these scenarios, you may provide an absolute path as an extra,
506           final place for Valgrind to search for debug objects by specifying
507           --extra-debuginfo-path=/path/to/debug/objects. The given path will
508           be prepended to the absolute path name of the searched-for object.
509           For example, if Valgrind is looking for the debuginfo for
510           /w/x/y/zz.so and --extra-debuginfo-path=/a/b/c is specified, it
511           will look for a debug object at /a/b/c/w/x/y/zz.so.
512
513           This flag should only be specified once. If it is specified
514           multiple times, only the last instance is honoured.
515
516       --debuginfo-server=ipaddr:port [default: undefined and unused]
517           This is a new, experimental, feature introduced in version 3.9.0.
518
519           In some scenarios it may be convenient to read debuginfo from
520           objects stored on a different machine. With this flag, Valgrind
521           will query a debuginfo server running on ipaddr and listening on
522           port port, if it cannot find the debuginfo object in the local
523           filesystem.
524
525           The debuginfo server must accept TCP connections on port port. The
526           debuginfo server is contained in the source file
527           auxprogs/valgrind-di-server.c. It will only serve from the
528           directory it is started in.  port defaults to 1500 in both client
529           and server if not specified.
530
531           If Valgrind looks for the debuginfo for /w/x/y/zz.so by using the
532           debuginfo server, it will strip the pathname components and merely
533           request zz.so on the server. That in turn will look only in its
534           current working directory for a matching debuginfo object.
535
536           The debuginfo data is transmitted in small fragments (8 KB) as
537           requested by Valgrind. Each block is compressed using LZO to reduce
538           transmission time. The implementation has been tuned for best
539           performance over a single-stage 802.11g (WiFi) network link.
540
541           Note that checks for matching primary vs debug objects, using GNU
542           debuglink CRC scheme, are performed even when using the debuginfo
543           server. To disable such checking, you need to also specify
544           --allow-mismatched-debuginfo=yes.
545
546           By default the Valgrind build system will build valgrind-di-server
547           for the target platform, which is almost certainly not what you
548           want. So far we have been unable to find out how to get
549           automake/autoconf to build it for the build platform. If you want
550           to use it, you will have to recompile it by hand using the command
551           shown at the top of auxprogs/valgrind-di-server.c.
552
553           Valgrind can also download debuginfo via debuginfod. See the
554           DEBUGINFOD section for more information.
555
556       --allow-mismatched-debuginfo=no|yes [no]
557           When reading debuginfo from separate debuginfo objects, Valgrind
558           will by default check that the main and debuginfo objects match,
559           using the GNU debuglink mechanism. This guarantees that it does not
560           read debuginfo from out of date debuginfo objects, and also ensures
561           that Valgrind can't crash as a result of mismatches.
562
563           This check can be overridden using
564           --allow-mismatched-debuginfo=yes. This may be useful when the
565           debuginfo and main objects have not been split in the proper way.
566           Be careful when using this, though: it disables all consistency
567           checking, and Valgrind has been observed to crash when the main and
568           debuginfo objects don't match.
569
570       --suppressions=<filename> [default: $PREFIX/lib/valgrind/default.supp]
571           Specifies an extra file from which to read descriptions of errors
572           to suppress. You may use up to 100 extra suppression files.
573
574       --gen-suppressions=<yes|no|all> [default: no]
575           When set to yes, Valgrind will pause after every error shown and
576           print the line:
577
578                   ---- Print suppression ? --- [Return/N/n/Y/y/C/c] ----
579
580           Pressing Ret, or N Ret or n Ret, causes Valgrind continue execution
581           without printing a suppression for this error.
582
583           Pressing Y Ret or y Ret causes Valgrind to write a suppression for
584           this error. You can then cut and paste it into a suppression file
585           if you don't want to hear about the error in the future.
586
587           When set to all, Valgrind will print a suppression for every
588           reported error, without querying the user.
589
590           This option is particularly useful with C++ programs, as it prints
591           out the suppressions with mangled names, as required.
592
593           Note that the suppressions printed are as specific as possible. You
594           may want to common up similar ones, by adding wildcards to function
595           names, and by using frame-level wildcards. The wildcarding
596           facilities are powerful yet flexible, and with a bit of careful
597           editing, you may be able to suppress a whole family of related
598           errors with only a few suppressions.
599
600           Sometimes two different errors are suppressed by the same
601           suppression, in which case Valgrind will output the suppression
602           more than once, but you only need to have one copy in your
603           suppression file (but having more than one won't cause problems).
604           Also, the suppression name is given as <insert a suppression name
605           here>; the name doesn't really matter, it's only used with the -v
606           option which prints out all used suppression records.
607
608       --input-fd=<number> [default: 0, stdin]
609           When using --gen-suppressions=yes, Valgrind will stop so as to read
610           keyboard input from you when each error occurs. By default it reads
611           from the standard input (stdin), which is problematic for programs
612           which close stdin. This option allows you to specify an alternative
613           file descriptor from which to read input.
614
615       --dsymutil=no|yes [yes]
616           This option is only relevant when running Valgrind on Mac OS X.
617
618           Mac OS X uses a deferred debug information (debuginfo) linking
619           scheme. When object files containing debuginfo are linked into a
620           .dylib or an executable, the debuginfo is not copied into the final
621           file. Instead, the debuginfo must be linked manually by running
622           dsymutil, a system-provided utility, on the executable or .dylib.
623           The resulting combined debuginfo is placed in a directory alongside
624           the executable or .dylib, but with the extension .dSYM.
625
626           With --dsymutil=no, Valgrind will detect cases where the .dSYM
627           directory is either missing, or is present but does not appear to
628           match the associated executable or .dylib, most likely because it
629           is out of date. In these cases, Valgrind will print a warning
630           message but take no further action.
631
632           With --dsymutil=yes, Valgrind will, in such cases, automatically
633           run dsymutil as necessary to bring the debuginfo up to date. For
634           all practical purposes, if you always use --dsymutil=yes, then
635           there is never any need to run dsymutil manually or as part of your
636           applications's build system, since Valgrind will run it as
637           necessary.
638
639           Valgrind will not attempt to run dsymutil on any executable or
640           library in /usr/, /bin/, /sbin/, /opt/, /sw/, /System/, /Library/
641           or /Applications/ since dsymutil will always fail in such
642           situations. It fails both because the debuginfo for such
643           pre-installed system components is not available anywhere, and also
644           because it would require write privileges in those directories.
645
646           Be careful when using --dsymutil=yes, since it will cause
647           pre-existing .dSYM directories to be silently deleted and
648           re-created. Also note that dsymutil is quite slow, sometimes
649           excessively so.
650
651       --max-stackframe=<number> [default: 2000000]
652           The maximum size of a stack frame. If the stack pointer moves by
653           more than this amount then Valgrind will assume that the program is
654           switching to a different stack.
655
656           You may need to use this option if your program has large
657           stack-allocated arrays. Valgrind keeps track of your program's
658           stack pointer. If it changes by more than the threshold amount,
659           Valgrind assumes your program is switching to a different stack,
660           and Memcheck behaves differently than it would for a stack pointer
661           change smaller than the threshold. Usually this heuristic works
662           well. However, if your program allocates large structures on the
663           stack, this heuristic will be fooled, and Memcheck will
664           subsequently report large numbers of invalid stack accesses. This
665           option allows you to change the threshold to a different value.
666
667           You should only consider use of this option if Valgrind's debug
668           output directs you to do so. In that case it will tell you the new
669           threshold you should specify.
670
671           In general, allocating large structures on the stack is a bad idea,
672           because you can easily run out of stack space, especially on
673           systems with limited memory or which expect to support large
674           numbers of threads each with a small stack, and also because the
675           error checking performed by Memcheck is more effective for
676           heap-allocated data than for stack-allocated data. If you have to
677           use this option, you may wish to consider rewriting your code to
678           allocate on the heap rather than on the stack.
679
680       --main-stacksize=<number> [default: use current 'ulimit' value]
681           Specifies the size of the main thread's stack.
682
683           To simplify its memory management, Valgrind reserves all required
684           space for the main thread's stack at startup. That means it needs
685           to know the required stack size at startup.
686
687           By default, Valgrind uses the current "ulimit" value for the stack
688           size, or 16 MB, whichever is lower. In many cases this gives a
689           stack size in the range 8 to 16 MB, which almost never overflows
690           for most applications.
691
692           If you need a larger total stack size, use --main-stacksize to
693           specify it. Only set it as high as you need, since reserving far
694           more space than you need (that is, hundreds of megabytes more than
695           you need) constrains Valgrind's memory allocators and may reduce
696           the total amount of memory that Valgrind can use. This is only
697           really of significance on 32-bit machines.
698
699           On Linux, you may request a stack of size up to 2GB. Valgrind will
700           stop with a diagnostic message if the stack cannot be allocated.
701
702           --main-stacksize only affects the stack size for the program's
703           initial thread. It has no bearing on the size of thread stacks, as
704           Valgrind does not allocate those.
705
706           You may need to use both --main-stacksize and --max-stackframe
707           together. It is important to understand that --main-stacksize sets
708           the maximum total stack size, whilst --max-stackframe specifies the
709           largest size of any one stack frame. You will have to work out the
710           --main-stacksize value for yourself (usually, if your applications
711           segfaults). But Valgrind will tell you the needed --max-stackframe
712           size, if necessary.
713
714           As discussed further in the description of --max-stackframe, a
715           requirement for a large stack is a sign of potential portability
716           problems. You are best advised to place all large data in
717           heap-allocated memory.
718
719       --max-threads=<number> [default: 500]
720           By default, Valgrind can handle to up to 500 threads. Occasionally,
721           that number is too small. Use this option to provide a different
722           limit. E.g.  --max-threads=3000.
723
725       For tools that use their own version of malloc (e.g. Memcheck, Massif,
726       Helgrind, DRD), the following options apply.
727
728       --alignment=<number> [default: 8 or 16, depending on the platform]
729           By default Valgrind's malloc, realloc, etc, return a block whose
730           starting address is 8-byte aligned or 16-byte aligned (the value
731           depends on the platform and matches the platform default). This
732           option allows you to specify a different alignment. The supplied
733           value must be greater than or equal to the default, less than or
734           equal to 4096, and must be a power of two.
735
736       --redzone-size=<number> [default: depends on the tool]
737           Valgrind's malloc, realloc, etc, add padding blocks before and
738           after each heap block allocated by the program being run. Such
739           padding blocks are called redzones. The default value for the
740           redzone size depends on the tool. For example, Memcheck adds and
741           protects a minimum of 16 bytes before and after each block
742           allocated by the client. This allows it to detect block underruns
743           or overruns of up to 16 bytes.
744
745           Increasing the redzone size makes it possible to detect overruns of
746           larger distances, but increases the amount of memory used by
747           Valgrind. Decreasing the redzone size will reduce the memory needed
748           by Valgrind but also reduces the chances of detecting
749           over/underruns, so is not recommended.
750
751       --xtree-memory=none|allocs|full [none]
752           Tools replacing Valgrind's malloc, realloc, etc, can optionally
753           produce an execution tree detailing which piece of code is
754           responsible for heap memory usage. See Execution Trees for a
755           detailed explanation about execution trees.
756
757           When set to none, no memory execution tree is produced.
758
759           When set to allocs, the memory execution tree gives the current
760           number of allocated bytes and the current number of allocated
761           blocks.
762
763           When set to full, the memory execution tree gives 6 different
764           measurements : the current number of allocated bytes and blocks
765           (same values as for allocs), the total number of allocated bytes
766           and blocks, the total number of freed bytes and blocks.
767
768           Note that the overhead in cpu and memory to produce an xtree
769           depends on the tool. The overhead in cpu is small for the value
770           allocs, as the information needed to produce this report is
771           maintained in any case by the tool. For massif and helgrind,
772           specifying full implies to capture a stack trace for each free
773           operation, while normally these tools only capture an allocation
774           stack trace. For Memcheck, the cpu overhead for the value full is
775           small, as this can only be used in combination with
776           --keep-stacktraces=alloc-and-free or
777           --keep-stacktraces=alloc-then-free, which already records a stack
778           trace for each free operation. The memory overhead varies between 5
779           and 10 words per unique stacktrace in the xtree, plus the memory
780           needed to record the stack trace for the free operations, if needed
781           specifically for the xtree.
782
783       --xtree-memory-file=<filename> [default: xtmemory.kcg.%p]
784           Specifies that Valgrind should produce the xtree memory report in
785           the specified file. Any %p or %q sequences appearing in the
786           filename are expanded in exactly the same way as they are for
787           --log-file. See the description of --log-file for details.
788
789           If the filename contains the extension .ms, then the produced file
790           format will be a massif output file format. If the filename
791           contains the extension .kcg or no extension is provided or
792           recognised, then the produced file format will be a callgrind
793           output format.
794
795           See Execution Trees for a detailed explanation about execution
796           trees formats.
797

UNCOMMON OPTIONS

799       These options apply to all tools, as they affect certain obscure
800       workings of the Valgrind core. Most people won't need to use them.
801
802       --smc-check=<none|stack|all|all-non-file> [default: all-non-file for
803       x86/amd64/s390x, stack for other archs]
804           This option controls Valgrind's detection of self-modifying code.
805           If no checking is done, when a program executes some code, then
806           overwrites it with new code, and executes the new code, Valgrind
807           will continue to execute the translations it made for the old code.
808           This will likely lead to incorrect behaviour and/or crashes.
809
810           For "modern" architectures -- anything that's not x86, amd64 or
811           s390x -- the default is stack. This is because a correct program
812           must take explicit action to reestablish D-I cache coherence
813           following code modification. Valgrind observes and honours such
814           actions, with the result that self-modifying code is transparently
815           handled with zero extra cost.
816
817           For x86, amd64 and s390x, the program is not required to notify the
818           hardware of required D-I coherence syncing. Hence the default is
819           all-non-file, which covers the normal case of generating code into
820           an anonymous (non-file-backed) mmap'd area.
821
822           The meanings of the four available settings are as follows. No
823           detection (none), detect self-modifying code on the stack (which is
824           used by GCC to implement nested functions) (stack), detect
825           self-modifying code everywhere (all), and detect self-modifying
826           code everywhere except in file-backed mappings (all-non-file).
827
828           Running with all will slow Valgrind down noticeably. Running with
829           none will rarely speed things up, since very little code gets
830           dynamically generated in most programs. The
831           VALGRIND_DISCARD_TRANSLATIONS client request is an alternative to
832           --smc-check=all and --smc-check=all-non-file that requires more
833           programmer effort but allows Valgrind to run your program faster,
834           by telling it precisely when translations need to be re-made.
835
836           --smc-check=all-non-file provides a cheaper but more limited
837           version of --smc-check=all. It adds checks to any translations that
838           do not originate from file-backed memory mappings. Typical
839           applications that generate code, for example JITs in web browsers,
840           generate code into anonymous mmaped areas, whereas the "fixed" code
841           of the browser always lives in file-backed mappings.
842           --smc-check=all-non-file takes advantage of this observation,
843           limiting the overhead of checking to code which is likely to be JIT
844           generated.
845
846       --read-inline-info=<yes|no> [default: see below]
847           When enabled, Valgrind will read information about inlined function
848           calls from DWARF3 debug info. This slows Valgrind startup and makes
849           it use more memory (typically for each inlined piece of code, 6
850           words and space for the function name), but it results in more
851           descriptive stacktraces. Currently, this functionality is enabled
852           by default only for Linux, Android and Solaris targets and only for
853           the tools Memcheck, Massif, Helgrind and DRD. Here is an example of
854           some stacktraces with --read-inline-info=no:
855
856               ==15380== Conditional jump or move depends on uninitialised value(s)
857               ==15380==    at 0x80484EA: main (inlinfo.c:6)
858               ==15380==
859               ==15380== Conditional jump or move depends on uninitialised value(s)
860               ==15380==    at 0x8048550: fun_noninline (inlinfo.c:6)
861               ==15380==    by 0x804850E: main (inlinfo.c:34)
862               ==15380==
863               ==15380== Conditional jump or move depends on uninitialised value(s)
864               ==15380==    at 0x8048520: main (inlinfo.c:6)
865
866           And here are the same errors with --read-inline-info=yes:
867
868               ==15377== Conditional jump or move depends on uninitialised value(s)
869               ==15377==    at 0x80484EA: fun_d (inlinfo.c:6)
870               ==15377==    by 0x80484EA: fun_c (inlinfo.c:14)
871               ==15377==    by 0x80484EA: fun_b (inlinfo.c:20)
872               ==15377==    by 0x80484EA: fun_a (inlinfo.c:26)
873               ==15377==    by 0x80484EA: main (inlinfo.c:33)
874               ==15377==
875               ==15377== Conditional jump or move depends on uninitialised value(s)
876               ==15377==    at 0x8048550: fun_d (inlinfo.c:6)
877               ==15377==    by 0x8048550: fun_noninline (inlinfo.c:41)
878               ==15377==    by 0x804850E: main (inlinfo.c:34)
879               ==15377==
880               ==15377== Conditional jump or move depends on uninitialised value(s)
881               ==15377==    at 0x8048520: fun_d (inlinfo.c:6)
882               ==15377==    by 0x8048520: main (inlinfo.c:35)
883
884       --read-var-info=<yes|no> [default: no]
885           When enabled, Valgrind will read information about variable types
886           and locations from DWARF3 debug info. This slows Valgrind startup
887           significantly and makes it use significantly more memory, but for
888           the tools that can take advantage of it (Memcheck, Helgrind, DRD)
889           it can result in more precise error messages. For example, here are
890           some standard errors issued by Memcheck:
891
892               ==15363== Uninitialised byte(s) found during client check request
893               ==15363==    at 0x80484A9: croak (varinfo1.c:28)
894               ==15363==    by 0x8048544: main (varinfo1.c:55)
895               ==15363==  Address 0x80497f7 is 7 bytes inside data symbol "global_i2"
896               ==15363==
897               ==15363== Uninitialised byte(s) found during client check request
898               ==15363==    at 0x80484A9: croak (varinfo1.c:28)
899               ==15363==    by 0x8048550: main (varinfo1.c:56)
900               ==15363==  Address 0xbea0d0cc is on thread 1's stack
901               ==15363==  in frame #1, created by main (varinfo1.c:45)
902
903           And here are the same errors with --read-var-info=yes:
904
905               ==15370== Uninitialised byte(s) found during client check request
906               ==15370==    at 0x80484A9: croak (varinfo1.c:28)
907               ==15370==    by 0x8048544: main (varinfo1.c:55)
908               ==15370==  Location 0x80497f7 is 0 bytes inside global_i2[7],
909               ==15370==  a global variable declared at varinfo1.c:41
910               ==15370==
911               ==15370== Uninitialised byte(s) found during client check request
912               ==15370==    at 0x80484A9: croak (varinfo1.c:28)
913               ==15370==    by 0x8048550: main (varinfo1.c:56)
914               ==15370==  Location 0xbeb4a0cc is 0 bytes inside local var "local"
915               ==15370==  declared at varinfo1.c:46, in frame #1 of thread 1
916
917       --vgdb-poll=<number> [default: 5000]
918           As part of its main loop, the Valgrind scheduler will poll to check
919           if some activity (such as an external command or some input from a
920           gdb) has to be handled by gdbserver. This activity poll will be
921           done after having run the given number of basic blocks (or slightly
922           more than the given number of basic blocks). This poll is quite
923           cheap so the default value is set relatively low. You might further
924           decrease this value if vgdb cannot use ptrace system call to
925           interrupt Valgrind if all threads are (most of the time) blocked in
926           a system call.
927
928       --vgdb-shadow-registers=no|yes [default: no]
929           When activated, gdbserver will expose the Valgrind shadow registers
930           to GDB. With this, the value of the Valgrind shadow registers can
931           be examined or changed using GDB. Exposing shadow registers only
932           works with GDB version 7.1 or later.
933
934       --vgdb-prefix=<prefix> [default: /tmp/vgdb-pipe]
935           To communicate with gdb/vgdb, the Valgrind gdbserver creates 3
936           files (2 named FIFOs and a mmap shared memory file). The prefix
937           option controls the directory and prefix for the creation of these
938           files.
939
940       --run-libc-freeres=<yes|no> [default: yes]
941           This option is only relevant when running Valgrind on Linux.
942
943           The GNU C library (libc.so), which is used by all programs, may
944           allocate memory for its own uses. Usually it doesn't bother to free
945           that memory when the program ends—there would be no point, since
946           the Linux kernel reclaims all process resources when a process
947           exits anyway, so it would just slow things down.
948
949           The glibc authors realised that this behaviour causes leak
950           checkers, such as Valgrind, to falsely report leaks in glibc, when
951           a leak check is done at exit. In order to avoid this, they provided
952           a routine called __libc_freeres specifically to make glibc release
953           all memory it has allocated. Memcheck therefore tries to run
954           __libc_freeres at exit.
955
956           Unfortunately, in some very old versions of glibc, __libc_freeres
957           is sufficiently buggy to cause segmentation faults. This was
958           particularly noticeable on Red Hat 7.1. So this option is provided
959           in order to inhibit the run of __libc_freeres. If your program
960           seems to run fine on Valgrind, but segfaults at exit, you may find
961           that --run-libc-freeres=no fixes that, although at the cost of
962           possibly falsely reporting space leaks in libc.so.
963
964       --run-cxx-freeres=<yes|no> [default: yes]
965           This option is only relevant when running Valgrind on Linux or
966           Solaris C++ programs.
967
968           The GNU Standard C++ library (libstdc++.so), which is used by all
969           C++ programs compiled with g++, may allocate memory for its own
970           uses. Usually it doesn't bother to free that memory when the
971           program ends—there would be no point, since the kernel reclaims all
972           process resources when a process exits anyway, so it would just
973           slow things down.
974
975           The gcc authors realised that this behaviour causes leak checkers,
976           such as Valgrind, to falsely report leaks in libstdc++, when a leak
977           check is done at exit. In order to avoid this, they provided a
978           routine called __gnu_cxx::__freeres specifically to make libstdc++
979           release all memory it has allocated. Memcheck therefore tries to
980           run __gnu_cxx::__freeres at exit.
981
982           For the sake of flexibility and unforeseen problems with
983           __gnu_cxx::__freeres, option --run-cxx-freeres=no exists, although
984           at the cost of possibly falsely reporting space leaks in
985           libstdc++.so.
986
987       --sim-hints=hint1,hint2,...
988           Pass miscellaneous hints to Valgrind which slightly modify the
989           simulated behaviour in nonstandard or dangerous ways, possibly to
990           help the simulation of strange features. By default no hints are
991           enabled. Use with caution! Currently known hints are:
992
993lax-ioctls: Be very lax about ioctl handling; the only
994               assumption is that the size is correct. Doesn't require the
995               full buffer to be initialised when writing. Without this, using
996               some device drivers with a large number of strange ioctl
997               commands becomes very tiresome.
998
999fuse-compatible: Enable special handling for certain system
1000               calls that may block in a FUSE file-system. This may be
1001               necessary when running Valgrind on a multi-threaded program
1002               that uses one thread to manage a FUSE file-system and another
1003               thread to access that file-system.
1004
1005enable-outer: Enable some special magic needed when the program
1006               being run is itself Valgrind.
1007
1008no-inner-prefix: Disable printing a prefix > in front of each
1009               stdout or stderr output line in an inner Valgrind being run by
1010               an outer Valgrind. This is useful when running Valgrind
1011               regression tests in an outer/inner setup. Note that the prefix
1012               > will always be printed in front of the inner debug logging
1013               lines.
1014
1015no-nptl-pthread-stackcache: This hint is only relevant when
1016               running Valgrind on Linux; it is ignored on Solaris and Mac OS
1017               X.
1018
1019               The GNU glibc pthread library (libpthread.so), which is used by
1020               pthread programs, maintains a cache of pthread stacks. When a
1021               pthread terminates, the memory used for the pthread stack and
1022               some thread local storage related data structure are not always
1023               directly released. This memory is kept in a cache (up to a
1024               certain size), and is re-used if a new thread is started.
1025
1026               This cache causes the helgrind tool to report some false
1027               positive race condition errors on this cached memory, as
1028               helgrind does not understand the internal glibc cache
1029               synchronisation primitives. So, when using helgrind, disabling
1030               the cache helps to avoid false positive race conditions, in
1031               particular when using thread local storage variables (e.g.
1032               variables using the __thread qualifier).
1033
1034               When using the memcheck tool, disabling the cache ensures the
1035               memory used by glibc to handle __thread variables is directly
1036               released when a thread terminates.
1037
1038               Note: Valgrind disables the cache using some internal knowledge
1039               of the glibc stack cache implementation and by examining the
1040               debug information of the pthread library. This technique is
1041               thus somewhat fragile and might not work for all glibc
1042               versions. This has been successfully tested with various glibc
1043               versions (e.g. 2.11, 2.16, 2.18) on various platforms.
1044
1045lax-doors: (Solaris only) Be very lax about door syscall
1046               handling over unrecognised door file descriptors. Does not
1047               require that full buffer is initialised when writing. Without
1048               this, programs using libdoor(3LIB) functionality with
1049               completely proprietary semantics may report large number of
1050               false positives.
1051
1052fallback-llsc: (MIPS and ARM64 only): Enables an alternative
1053               implementation of Load-Linked (LL) and Store-Conditional (SC)
1054               instructions. The standard implementation gives more correct
1055               behaviour, but can cause indefinite looping on certain
1056               processor implementations that are intolerant of extra memory
1057               references between LL and SC. So far this is known only to
1058               happen on Cavium 3 cores. You should not need to use this flag,
1059               since the relevant cores are detected at startup and the
1060               alternative implementation is automatically enabled if
1061               necessary. There is no equivalent anti-flag: you cannot
1062               force-disable the alternative implementation, if it is
1063               automatically enabled. The underlying problem exists because
1064               the "standard" implementation of LL and SC is done by copying
1065               through LL and SC instructions into the instrumented code.
1066               However, tools may insert extra instrumentation memory
1067               references in between the LL and SC instructions. These memory
1068               references are not present in the original uninstrumented code,
1069               and their presence in the instrumented code can cause the SC
1070               instructions to persistently fail, leading to indefinite
1071               looping in LL-SC blocks. The alternative implementation gives
1072               correct behaviour of LL and SC instructions between threads in
1073               a process, up to and including the ABA scenario. It also gives
1074               correct behaviour between a Valgrinded thread and a
1075               non-Valgrinded thread running in a different process, that
1076               communicate via shared memory, but only up to and including
1077               correct CAS behaviour -- in this case the ABA scenario may not
1078               be correctly handled.
1079
1080       --fair-sched=<no|yes|try> [default: no]
1081           The --fair-sched option controls the locking mechanism used by
1082           Valgrind to serialise thread execution. The locking mechanism
1083           controls the way the threads are scheduled, and different settings
1084           give different trade-offs between fairness and performance. For
1085           more details about the Valgrind thread serialisation scheme and its
1086           impact on performance and thread scheduling, see Scheduling and
1087           Multi-Thread Performance.
1088
1089           •   The value --fair-sched=yes activates a fair scheduler. In
1090               short, if multiple threads are ready to run, the threads will
1091               be scheduled in a round robin fashion. This mechanism is not
1092               available on all platforms or Linux versions. If not available,
1093               using --fair-sched=yes will cause Valgrind to terminate with an
1094               error.
1095
1096               You may find this setting improves overall responsiveness if
1097               you are running an interactive multithreaded program, for
1098               example a web browser, on Valgrind.
1099
1100           •   The value --fair-sched=try activates fair scheduling if
1101               available on the platform. Otherwise, it will automatically
1102               fall back to --fair-sched=no.
1103
1104           •   The value --fair-sched=no activates a scheduler which does not
1105               guarantee fairness between threads ready to run, but which in
1106               general gives the highest performance.
1107
1108       --kernel-variant=variant1,variant2,...
1109           Handle system calls and ioctls arising from minor variants of the
1110           default kernel for this platform. This is useful for running on
1111           hacked kernels or with kernel modules which support nonstandard
1112           ioctls, for example. Use with caution. If you don't understand what
1113           this option does then you almost certainly don't need it. Currently
1114           known variants are:
1115
1116bproc: support the sys_broc system call on x86. This is for
1117               running on BProc, which is a minor variant of standard Linux
1118               which is sometimes used for building clusters.
1119
1120android-no-hw-tls: some versions of the Android emulator for
1121               ARM do not provide a hardware TLS (thread-local state)
1122               register, and Valgrind crashes at startup. Use this variant to
1123               select software support for TLS.
1124
1125android-gpu-sgx5xx: use this to support handling of proprietary
1126               ioctls for the PowerVR SGX 5XX series of GPUs on Android
1127               devices. Failure to select this does not cause stability
1128               problems, but may cause Memcheck to report false errors after
1129               the program performs GPU-specific ioctls.
1130
1131android-gpu-adreno3xx: similarly, use this to support handling
1132               of proprietary ioctls for the Qualcomm Adreno 3XX series of
1133               GPUs on Android devices.
1134
1135       --merge-recursive-frames=<number> [default: 0]
1136           Some recursive algorithms, for example balanced binary tree
1137           implementations, create many different stack traces, each
1138           containing cycles of calls. A cycle is defined as two identical
1139           program counter values separated by zero or more other program
1140           counter values. Valgrind may then use a lot of memory to store all
1141           these stack traces. This is a poor use of memory considering that
1142           such stack traces contain repeated uninteresting recursive calls
1143           instead of more interesting information such as the function that
1144           has initiated the recursive call.
1145
1146           The option --merge-recursive-frames=<number> instructs Valgrind to
1147           detect and merge recursive call cycles having a size of up to
1148           <number> frames. When such a cycle is detected, Valgrind records
1149           the cycle in the stack trace as a unique program counter.
1150
1151           The value 0 (the default) causes no recursive call merging. A value
1152           of 1 will cause stack traces of simple recursive algorithms (for
1153           example, a factorial implementation) to be collapsed. A value of 2
1154           will usually be needed to collapse stack traces produced by
1155           recursive algorithms such as binary trees, quick sort, etc. Higher
1156           values might be needed for more complex recursive algorithms.
1157
1158           Note: recursive calls are detected by analysis of program counter
1159           values. They are not detected by looking at function names.
1160
1161       --num-transtab-sectors=<number> [default: 6 for Android platforms, 16
1162       for all others]
1163           Valgrind translates and instruments your program's machine code in
1164           small fragments (basic blocks). The translations are stored in a
1165           translation cache that is divided into a number of sections
1166           (sectors). If the cache is full, the sector containing the oldest
1167           translations is emptied and reused. If these old translations are
1168           needed again, Valgrind must re-translate and re-instrument the
1169           corresponding machine code, which is expensive. If the "executed
1170           instructions" working set of a program is big, increasing the
1171           number of sectors may improve performance by reducing the number of
1172           re-translations needed. Sectors are allocated on demand. Once
1173           allocated, a sector can never be freed, and occupies considerable
1174           space, depending on the tool and the value of
1175           --avg-transtab-entry-size (about 40 MB per sector for Memcheck).
1176           Use the option --stats=yes to obtain precise information about the
1177           memory used by a sector and the allocation and recycling of
1178           sectors.
1179
1180       --avg-transtab-entry-size=<number> [default: 0, meaning use tool
1181       provided default]
1182           Average size of translated basic block. This average size is used
1183           to dimension the size of a sector. Each tool provides a default
1184           value to be used. If this default value is too small, the
1185           translation sectors will become full too quickly. If this default
1186           value is too big, a significant part of the translation sector
1187           memory will be unused. Note that the average size of a basic block
1188           translation depends on the tool, and might depend on tool options.
1189           For example, the memcheck option --track-origins=yes increases the
1190           size of the basic block translations. Use --avg-transtab-entry-size
1191           to tune the size of the sectors, either to gain memory or to avoid
1192           too many retranslations.
1193
1194       --aspace-minaddr=<address> [default: depends on the platform]
1195           To avoid potential conflicts with some system libraries, Valgrind
1196           does not use the address space below --aspace-minaddr value,
1197           keeping it reserved in case a library specifically requests memory
1198           in this region. So, some "pessimistic" value is guessed by Valgrind
1199           depending on the platform. On linux, by default, Valgrind avoids
1200           using the first 64MB even if typically there is no conflict in this
1201           complete zone. You can use the option --aspace-minaddr to have your
1202           memory hungry application benefitting from more of this lower
1203           memory. On the other hand, if you encounter a conflict, increasing
1204           aspace-minaddr value might solve it. Conflicts will typically
1205           manifest themselves with mmap failures in the low range of the
1206           address space. The provided address must be page aligned and must
1207           be equal or bigger to 0x1000 (4KB). To find the default value on
1208           your platform, do something such as valgrind -d -d date 2>&1 | grep
1209           -i minaddr. Values lower than 0x10000 (64KB) are known to create
1210           problems on some distributions.
1211
1212       --valgrind-stacksize=<number> [default: 1MB]
1213           For each thread, Valgrind needs its own 'private' stack. The
1214           default size for these stacks is largely dimensioned, and so should
1215           be sufficient in most cases. In case the size is too small,
1216           Valgrind will segfault. Before segfaulting, a warning might be
1217           produced by Valgrind when approaching the limit.
1218
1219           Use the option --valgrind-stacksize if such an (unlikely) warning
1220           is produced, or Valgrind dies due to a segmentation violation. Such
1221           segmentation violations have been seen when demangling huge C++
1222           symbols.
1223
1224           If your application uses many threads and needs a lot of memory,
1225           you can gain some memory by reducing the size of these Valgrind
1226           stacks using the option --valgrind-stacksize.
1227
1228       --show-emwarns=<yes|no> [default: no]
1229           When enabled, Valgrind will emit warnings about its CPU emulation
1230           in certain cases. These are usually not interesting.
1231
1232       --require-text-symbol=:sonamepatt:fnnamepatt
1233           When a shared object whose soname matches sonamepatt is loaded into
1234           the process, examine all the text symbols it exports. If none of
1235           those match fnnamepatt, print an error message and abandon the run.
1236           This makes it possible to ensure that the run does not continue
1237           unless a given shared object contains a particular function name.
1238
1239           Both sonamepatt and fnnamepatt can be written using the usual ?
1240           and * wildcards. For example: ":*libc.so*:foo?bar". You may use
1241           characters other than a colon to separate the two patterns. It is
1242           only important that the first character and the separator character
1243           are the same. For example, the above example could also be written
1244           "Q*libc.so*Qfoo?bar". Multiple
1245            --require-text-symbol flags are allowed, in which case shared
1246           objects that are loaded into the process will be checked against
1247           all of them.
1248
1249           The purpose of this is to support reliable usage of marked-up
1250           libraries. For example, suppose we have a version of GCC's
1251           libgomp.so which has been marked up with annotations to support
1252           Helgrind. It is only too easy and confusing to load the wrong,
1253           un-annotated libgomp.so into the application. So the idea is: add a
1254           text symbol in the marked-up library, for example
1255           annotated_for_helgrind_3_6, and then give the flag
1256           --require-text-symbol=:*libgomp*so*:annotated_for_helgrind_3_6 so
1257           that when libgomp.so is loaded, Valgrind scans its symbol table,
1258           and if the symbol isn't present the run is aborted, rather than
1259           continuing silently with the un-marked-up library. Note that you
1260           should put the entire flag in quotes to stop shells expanding up
1261           the * and ?  wildcards.
1262
1263       --soname-synonyms=syn1=pattern1,syn2=pattern2,...
1264           When a shared library is loaded, Valgrind checks for functions in
1265           the library that must be replaced or wrapped. For example, Memcheck
1266           replaces some string and memory functions (strchr, strlen, strcpy,
1267           memchr, memcpy, memmove, etc.) with its own versions. Such
1268           replacements are normally done only in shared libraries whose
1269           soname matches a predefined soname pattern (e.g.  libc.so* on
1270           linux). By default, no replacement is done for a statically linked
1271           binary or for alternative libraries, except for the allocation
1272           functions (malloc, free, calloc, memalign, realloc, operator new,
1273           operator delete, etc.) Such allocation functions are intercepted by
1274           default in any shared library or in the executable if they are
1275           exported as global symbols. This means that if a replacement
1276           allocation library such as tcmalloc is found, its functions are
1277           also intercepted by default. In some cases, the replacements allow
1278           --soname-synonyms to specify one additional synonym pattern, giving
1279           flexibility in the replacement. Or to prevent interception of all
1280           public allocation symbols.
1281
1282           Currently, this flexibility is only allowed for the malloc related
1283           functions, using the synonym somalloc. This synonym is usable for
1284           all tools doing standard replacement of malloc related functions
1285           (e.g. memcheck, helgrind, drd, massif, dhat).
1286
1287           •   Alternate malloc library: to replace the malloc related
1288               functions in a specific alternate library with soname
1289               mymalloclib.so (and not in any others), give the option
1290               --soname-synonyms=somalloc=mymalloclib.so. A pattern can be
1291               used to match multiple libraries sonames. For example,
1292               --soname-synonyms=somalloc=*tcmalloc* will match the soname of
1293               all variants of the tcmalloc library (native, debug, profiled,
1294               ... tcmalloc variants).
1295
1296               Note: the soname of a elf shared library can be retrieved using
1297               the readelf utility.
1298
1299           •   Replacements in a statically linked library are done by using
1300               the NONE pattern. For example, if you link with libtcmalloc.a,
1301               and only want to intercept the malloc related functions in the
1302               executable (and standard libraries) themselves, but not any
1303               other shared libraries, you can give the option
1304               --soname-synonyms=somalloc=NONE. Note that a NONE pattern will
1305               match the main executable and any shared library having no
1306               soname.
1307
1308           •   To run a "default" Firefox build for Linux, in which JEMalloc
1309               is linked in to the main executable, use
1310               --soname-synonyms=somalloc=NONE.
1311
1312           •   To only intercept allocation symbols in the default system
1313               libraries, but not in any other shared library or the
1314               executable defining public malloc or operator new related
1315               functions use a non-existing library name like
1316               --soname-synonyms=somalloc=nouserintercepts (where
1317               nouserintercepts can be any non-existing library name).
1318
1319           •   Shared library of the dynamic (runtime) linker is excluded from
1320               searching for global public symbols, such as those for the
1321               malloc related functions (identified by somalloc synonym).
1322
1323       --progress-interval=<number> [default: 0, meaning 'disabled']
1324           This is an enhancement to Valgrind's debugging output. It is
1325           unlikely to be of interest to end users.
1326
1327           When number is set to a non-zero value, Valgrind will print a
1328           one-line progress summary every number seconds. Valid settings for
1329           number are between 0 and 3600 inclusive. Here's some example output
1330           with number set to 10:
1331
1332               PROGRESS: U 110s, W 113s, 97.3% CPU, EvC 414.79M, TIn 616.7k, TOut 0.5k, #thr 67
1333               PROGRESS: U 120s, W 124s, 96.8% CPU, EvC 505.27M, TIn 636.6k, TOut 3.0k, #thr 64
1334               PROGRESS: U 130s, W 134s, 97.0% CPU, EvC 574.90M, TIn 657.5k, TOut 3.0k, #thr 63
1335
1336           Each line shows:
1337
1338U: total user time
1339
1340W: total wallclock time
1341
1342CPU: overall average cpu use
1343
1344EvC: number of event checks. An event check is a backwards
1345               branch in the simulated program, so this is a measure of
1346               forward progress of the program
1347
1348TIn: number of code blocks instrumented by the JIT
1349
1350TOut: number of instrumented code blocks that have been thrown
1351               away
1352
1353#thr: number of threads in the program
1354
1355           From the progress of these, it is possible to observe:
1356
1357           •   when the program is compute bound (TIn rises slowly, EvC rises
1358               rapidly)
1359
1360           •   when the program is in a spinloop (TIn/TOut fixed, EvC rises
1361               rapidly)
1362
1363           •   when the program is JIT-bound (TIn rises rapidly)
1364
1365           •   when the program is rapidly discarding code (TOut rises
1366               rapidly)
1367
1368           •   when the program is about to achieve some expected state (EvC
1369               arrives at some value you expect)
1370
1371           •   when the program is idling (U rises more slowly than W)
1372
1373

DEBUGGING VALGRIND OPTIONS

1375       There are also some options for debugging Valgrind itself. You
1376       shouldn't need to use them in the normal run of things. If you wish to
1377       see the list, use the --help-debug option.
1378

MEMCHECK OPTIONS

1380       --leak-check=<no|summary|yes|full> [default: summary]
1381           When enabled, search for memory leaks when the client program
1382           finishes. If set to summary, it says how many leaks occurred. If
1383           set to full or yes, each individual leak will be shown in detail
1384           and/or counted as an error, as specified by the options
1385           --show-leak-kinds and --errors-for-leak-kinds.
1386
1387           If --xml=yes is given, memcheck will automatically use the value
1388           --leak-check=full. You can use --show-leak-kinds=none to reduce the
1389           size of the xml output if you are not interested in the leak
1390           results.
1391
1392       --leak-resolution=<low|med|high> [default: high]
1393           When doing leak checking, determines how willing Memcheck is to
1394           consider different backtraces to be the same for the purposes of
1395           merging multiple leaks into a single leak report. When set to low,
1396           only the first two entries need match. When med, four entries have
1397           to match. When high, all entries need to match.
1398
1399           For hardcore leak debugging, you probably want to use
1400           --leak-resolution=high together with --num-callers=40 or some such
1401           large number.
1402
1403           Note that the --leak-resolution setting does not affect Memcheck's
1404           ability to find leaks. It only changes how the results are
1405           presented.
1406
1407       --show-leak-kinds=<set> [default: definite,possible]
1408           Specifies the leak kinds to show in a full leak search, in one of
1409           the following ways:
1410
1411           •   a comma separated list of one or more of definite indirect
1412               possible reachable.
1413
1414all to specify the complete set (all leak kinds). It is
1415               equivalent to
1416               --show-leak-kinds=definite,indirect,possible,reachable.
1417
1418none for the empty set.
1419
1420       --errors-for-leak-kinds=<set> [default: definite,possible]
1421           Specifies the leak kinds to count as errors in a full leak search.
1422           The <set> is specified similarly to --show-leak-kinds
1423
1424       --leak-check-heuristics=<set> [default: all]
1425           Specifies the set of leak check heuristics to be used during leak
1426           searches. The heuristics control which interior pointers to a block
1427           cause it to be considered as reachable. The heuristic set is
1428           specified in one of the following ways:
1429
1430           •   a comma separated list of one or more of stdstring length64
1431               newarray multipleinheritance.
1432
1433all to activate the complete set of heuristics. It is
1434               equivalent to
1435               --leak-check-heuristics=stdstring,length64,newarray,multipleinheritance.
1436
1437none for the empty set.
1438
1439           Note that these heuristics are dependent on the layout of the
1440           objects produced by the C++ compiler. They have been tested with
1441           some gcc versions (e.g. 4.4 and 4.7). They might not work properly
1442           with other C++ compilers.
1443
1444       --show-reachable=<yes|no> , --show-possibly-lost=<yes|no>
1445           These options provide an alternative way to specify the leak kinds
1446           to show:
1447
1448--show-reachable=no --show-possibly-lost=yes is equivalent to
1449               --show-leak-kinds=definite,possible.
1450
1451--show-reachable=no --show-possibly-lost=no is equivalent to
1452               --show-leak-kinds=definite.
1453
1454--show-reachable=yes is equivalent to --show-leak-kinds=all.
1455
1456           Note that --show-possibly-lost=no has no effect if
1457           --show-reachable=yes is specified.
1458
1459       --xtree-leak=<no|yes> [no]
1460           If set to yes, the results for the leak search done at exit will be
1461           output in a 'Callgrind Format' execution tree file. Note that this
1462           automatically sets the options --leak-check=full and
1463           --show-leak-kinds=all, to allow xtree visualisation tools such as
1464           kcachegrind to select what kind to leak to visualise. The produced
1465           file will contain the following events:
1466
1467RB : Reachable Bytes
1468
1469PB : Possibly lost Bytes
1470
1471IB : Indirectly lost Bytes
1472
1473DB : Definitely lost Bytes (direct plus indirect)
1474
1475DIB : Definitely Indirectly lost Bytes (subset of DB)
1476
1477RBk : reachable Blocks
1478
1479PBk : Possibly lost Blocks
1480
1481IBk : Indirectly lost Blocks
1482
1483DBk : Definitely lost Blocks
1484
1485           The increase or decrease for all events above will also be output
1486           in the file to provide the delta (increase or decrease) between 2
1487           successive leak searches. For example, iRB is the increase of the
1488           RB event, dPBk is the decrease of PBk event. The values for the
1489           increase and decrease events will be zero for the first leak search
1490           done.
1491
1492           See Execution Trees for a detailed explanation about execution
1493           trees.
1494
1495       --xtree-leak-file=<filename> [default: xtleak.kcg.%p]
1496           Specifies that Valgrind should produce the xtree leak report in the
1497           specified file. Any %p, %q or %n sequences appearing in the
1498           filename are expanded in exactly the same way as they are for
1499           --log-file. See the description of --log-file for details.
1500
1501           See Execution Trees for a detailed explanation about execution
1502           trees formats.
1503
1504       --undef-value-errors=<yes|no> [default: yes]
1505           Controls whether Memcheck reports uses of undefined value errors.
1506           Set this to no if you don't want to see undefined value errors. It
1507           also has the side effect of speeding up Memcheck somewhat.
1508           AddrCheck (removed in Valgrind 3.1.0) functioned like Memcheck with
1509           --undef-value-errors=no.
1510
1511       --track-origins=<yes|no> [default: no]
1512           Controls whether Memcheck tracks the origin of uninitialised
1513           values. By default, it does not, which means that although it can
1514           tell you that an uninitialised value is being used in a dangerous
1515           way, it cannot tell you where the uninitialised value came from.
1516           This often makes it difficult to track down the root problem.
1517
1518           When set to yes, Memcheck keeps track of the origins of all
1519           uninitialised values. Then, when an uninitialised value error is
1520           reported, Memcheck will try to show the origin of the value. An
1521           origin can be one of the following four places: a heap block, a
1522           stack allocation, a client request, or miscellaneous other sources
1523           (eg, a call to brk).
1524
1525           For uninitialised values originating from a heap block, Memcheck
1526           shows where the block was allocated. For uninitialised values
1527           originating from a stack allocation, Memcheck can tell you which
1528           function allocated the value, but no more than that -- typically it
1529           shows you the source location of the opening brace of the function.
1530           So you should carefully check that all of the function's local
1531           variables are initialised properly.
1532
1533           Performance overhead: origin tracking is expensive. It halves
1534           Memcheck's speed and increases memory use by a minimum of 100MB,
1535           and possibly more. Nevertheless it can drastically reduce the
1536           effort required to identify the root cause of uninitialised value
1537           errors, and so is often a programmer productivity win, despite
1538           running more slowly.
1539
1540           Accuracy: Memcheck tracks origins quite accurately. To avoid very
1541           large space and time overheads, some approximations are made. It is
1542           possible, although unlikely, that Memcheck will report an incorrect
1543           origin, or not be able to identify any origin.
1544
1545           Note that the combination --track-origins=yes and
1546           --undef-value-errors=no is nonsensical. Memcheck checks for and
1547           rejects this combination at startup.
1548
1549       --partial-loads-ok=<yes|no> [default: yes]
1550           Controls how Memcheck handles 32-, 64-, 128- and 256-bit naturally
1551           aligned loads from addresses for which some bytes are addressable
1552           and others are not. When yes, such loads do not produce an address
1553           error. Instead, loaded bytes originating from illegal addresses are
1554           marked as uninitialised, and those corresponding to legal addresses
1555           are handled in the normal way.
1556
1557           When no, loads from partially invalid addresses are treated the
1558           same as loads from completely invalid addresses: an illegal-address
1559           error is issued, and the resulting bytes are marked as initialised.
1560
1561           Note that code that behaves in this way is in violation of the ISO
1562           C/C++ standards, and should be considered broken. If at all
1563           possible, such code should be fixed.
1564
1565       --expensive-definedness-checks=<no|auto|yes> [default: auto]
1566           Controls whether Memcheck should employ more precise but also more
1567           expensive (time consuming) instrumentation when checking the
1568           definedness of certain values. In particular, this affects the
1569           instrumentation of integer adds, subtracts and equality
1570           comparisons.
1571
1572           Selecting --expensive-definedness-checks=yes causes Memcheck to use
1573           the most accurate analysis possible. This minimises false error
1574           rates but can cause up to 30% performance degradation.
1575
1576           Selecting --expensive-definedness-checks=no causes Memcheck to use
1577           the cheapest instrumentation possible. This maximises performance
1578           but will normally give an unusably high false error rate.
1579
1580           The default setting, --expensive-definedness-checks=auto, is
1581           strongly recommended. This causes Memcheck to use the minimum of
1582           expensive instrumentation needed to achieve the same false error
1583           rate as --expensive-definedness-checks=yes. It also enables an
1584           instrumentation-time analysis pass which aims to further reduce the
1585           costs of accurate instrumentation. Overall, the performance loss is
1586           generally around 5% relative to --expensive-definedness-checks=no,
1587           although this is strongly workload dependent. Note that the exact
1588           instrumentation settings in this mode are architecture dependent.
1589
1590       --keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none
1591       [default: alloc-and-free]
1592           Controls which stack trace(s) to keep for malloc'd and/or free'd
1593           blocks.
1594
1595           With alloc-then-free, a stack trace is recorded at allocation time,
1596           and is associated with the block. When the block is freed, a second
1597           stack trace is recorded, and this replaces the allocation stack
1598           trace. As a result, any "use after free" errors relating to this
1599           block can only show a stack trace for where the block was freed.
1600
1601           With alloc-and-free, both allocation and the deallocation stack
1602           traces for the block are stored. Hence a "use after free" error
1603           will show both, which may make the error easier to diagnose.
1604           Compared to alloc-then-free, this setting slightly increases
1605           Valgrind's memory use as the block contains two references instead
1606           of one.
1607
1608           With alloc, only the allocation stack trace is recorded (and
1609           reported). With free, only the deallocation stack trace is recorded
1610           (and reported). These values somewhat decrease Valgrind's memory
1611           and cpu usage. They can be useful depending on the error types you
1612           are searching for and the level of detail you need to analyse them.
1613           For example, if you are only interested in memory leak errors, it
1614           is sufficient to record the allocation stack traces.
1615
1616           With none, no stack traces are recorded for malloc and free
1617           operations. If your program allocates a lot of blocks and/or
1618           allocates/frees from many different stack traces, this can
1619           significantly decrease cpu and/or memory required. Of course, few
1620           details will be reported for errors related to heap blocks.
1621
1622           Note that once a stack trace is recorded, Valgrind keeps the stack
1623           trace in memory even if it is not referenced by any block. Some
1624           programs (for example, recursive algorithms) can generate a huge
1625           number of stack traces. If Valgrind uses too much memory in such
1626           circumstances, you can reduce the memory required with the options
1627           --keep-stacktraces and/or by using a smaller value for the option
1628           --num-callers.
1629
1630           If you want to use --xtree-memory=full memory profiling (see
1631           Execution Trees), then you cannot specify --keep-stacktraces=free
1632           or --keep-stacktraces=none.
1633
1634       --freelist-vol=<number> [default: 20000000]
1635           When the client program releases memory using free (in C) or delete
1636           (C++), that memory is not immediately made available for
1637           re-allocation. Instead, it is marked inaccessible and placed in a
1638           queue of freed blocks. The purpose is to defer as long as possible
1639           the point at which freed-up memory comes back into circulation.
1640           This increases the chance that Memcheck will be able to detect
1641           invalid accesses to blocks for some significant period of time
1642           after they have been freed.
1643
1644           This option specifies the maximum total size, in bytes, of the
1645           blocks in the queue. The default value is twenty million bytes.
1646           Increasing this increases the total amount of memory used by
1647           Memcheck but may detect invalid uses of freed blocks which would
1648           otherwise go undetected.
1649
1650       --freelist-big-blocks=<number> [default: 1000000]
1651           When making blocks from the queue of freed blocks available for
1652           re-allocation, Memcheck will in priority re-circulate the blocks
1653           with a size greater or equal to --freelist-big-blocks. This ensures
1654           that freeing big blocks (in particular freeing blocks bigger than
1655           --freelist-vol) does not immediately lead to a re-circulation of
1656           all (or a lot of) the small blocks in the free list. In other
1657           words, this option increases the likelihood to discover dangling
1658           pointers for the "small" blocks, even when big blocks are freed.
1659
1660           Setting a value of 0 means that all the blocks are re-circulated in
1661           a FIFO order.
1662
1663       --workaround-gcc296-bugs=<yes|no> [default: no]
1664           When enabled, assume that reads and writes some small distance
1665           below the stack pointer are due to bugs in GCC 2.96, and does not
1666           report them. The "small distance" is 256 bytes by default. Note
1667           that GCC 2.96 is the default compiler on some ancient Linux
1668           distributions (RedHat 7.X) and so you may need to use this option.
1669           Do not use it if you do not have to, as it can cause real errors to
1670           be overlooked. A better alternative is to use a more recent GCC in
1671           which this bug is fixed.
1672
1673           You may also need to use this option when working with GCC 3.X or
1674           4.X on 32-bit PowerPC Linux. This is because GCC generates code
1675           which occasionally accesses below the stack pointer, particularly
1676           for floating-point to/from integer conversions. This is in
1677           violation of the 32-bit PowerPC ELF specification, which makes no
1678           provision for locations below the stack pointer to be accessible.
1679
1680           This option is deprecated as of version 3.12 and may be removed
1681           from future versions. You should instead use
1682           --ignore-range-below-sp to specify the exact range of offsets below
1683           the stack pointer that should be ignored. A suitable equivalent is
1684           --ignore-range-below-sp=1024-1.
1685
1686       --ignore-range-below-sp=<number>-<number>
1687           This is a more general replacement for the deprecated
1688           --workaround-gcc296-bugs option. When specified, it causes Memcheck
1689           not to report errors for accesses at the specified offsets below
1690           the stack pointer. The two offsets must be positive decimal numbers
1691           and -- somewhat counterintuitively -- the first one must be larger,
1692           in order to imply a non-wraparound address range to ignore. For
1693           example, to ignore 4 byte accesses at 8192 bytes below the stack
1694           pointer, use --ignore-range-below-sp=8192-8189. Only one range may
1695           be specified.
1696
1697       --show-mismatched-frees=<yes|no> [default: yes]
1698           When enabled, Memcheck checks that heap blocks are deallocated
1699           using a function that matches the allocating function. That is, it
1700           expects free to be used to deallocate blocks allocated by malloc,
1701           delete for blocks allocated by new, and delete[] for blocks
1702           allocated by new[]. If a mismatch is detected, an error is
1703           reported. This is in general important because in some
1704           environments, freeing with a non-matching function can cause
1705           crashes.
1706
1707           There is however a scenario where such mismatches cannot be
1708           avoided. That is when the user provides implementations of
1709           new/new[] that call malloc and of delete/delete[] that call free,
1710           and these functions are asymmetrically inlined. For example,
1711           imagine that delete[] is inlined but new[] is not. The result is
1712           that Memcheck "sees" all delete[] calls as direct calls to free,
1713           even when the program source contains no mismatched calls.
1714
1715           This causes a lot of confusing and irrelevant error reports.
1716           --show-mismatched-frees=no disables these checks. It is not
1717           generally advisable to disable them, though, because you may miss
1718           real errors as a result.
1719
1720       --ignore-ranges=0xPP-0xQQ[,0xRR-0xSS]
1721           Any ranges listed in this option (and multiple ranges can be
1722           specified, separated by commas) will be ignored by Memcheck's
1723           addressability checking.
1724
1725       --malloc-fill=<hexnumber>
1726           Fills blocks allocated by malloc, new, etc, but not by calloc, with
1727           the specified byte. This can be useful when trying to shake out
1728           obscure memory corruption problems. The allocated area is still
1729           regarded by Memcheck as undefined -- this option only affects its
1730           contents. Note that --malloc-fill does not affect a block of memory
1731           when it is used as argument to client requests
1732           VALGRIND_MEMPOOL_ALLOC or VALGRIND_MALLOCLIKE_BLOCK.
1733
1734       --free-fill=<hexnumber>
1735           Fills blocks freed by free, delete, etc, with the specified byte
1736           value. This can be useful when trying to shake out obscure memory
1737           corruption problems. The freed area is still regarded by Memcheck
1738           as not valid for access -- this option only affects its contents.
1739           Note that --free-fill does not affect a block of memory when it is
1740           used as argument to client requests VALGRIND_MEMPOOL_FREE or
1741           VALGRIND_FREELIKE_BLOCK.
1742

CACHEGRIND OPTIONS

1744       --I1=<size>,<associativity>,<line size>
1745           Specify the size, associativity and line size of the level 1
1746           instruction cache.
1747
1748       --D1=<size>,<associativity>,<line size>
1749           Specify the size, associativity and line size of the level 1 data
1750           cache.
1751
1752       --LL=<size>,<associativity>,<line size>
1753           Specify the size, associativity and line size of the last-level
1754           cache.
1755
1756       --cache-sim=no|yes [yes]
1757           Enables or disables collection of cache access and miss counts.
1758
1759       --branch-sim=no|yes [no]
1760           Enables or disables collection of branch instruction and
1761           misprediction counts. By default this is disabled as it slows
1762           Cachegrind down by approximately 25%. Note that you cannot specify
1763           --cache-sim=no and --branch-sim=no together, as that would leave
1764           Cachegrind with no information to collect.
1765
1766       --cachegrind-out-file=<file>
1767           Write the profile data to file rather than to the default output
1768           file, cachegrind.out.<pid>. The %p and %q format specifiers can be
1769           used to embed the process ID and/or the contents of an environment
1770           variable in the name, as is the case for the core option
1771           --log-file.
1772

CALLGRIND OPTIONS

1774       --callgrind-out-file=<file>
1775           Write the profile data to file rather than to the default output
1776           file, callgrind.out.<pid>. The %p and %q format specifiers can be
1777           used to embed the process ID and/or the contents of an environment
1778           variable in the name, as is the case for the core option
1779           --log-file. When multiple dumps are made, the file name is modified
1780           further; see below.
1781
1782       --dump-line=<no|yes> [default: yes]
1783           This specifies that event counting should be performed at source
1784           line granularity. This allows source annotation for sources which
1785           are compiled with debug information (-g).
1786
1787       --dump-instr=<no|yes> [default: no]
1788           This specifies that event counting should be performed at
1789           per-instruction granularity. This allows for assembly code
1790           annotation. Currently the results can only be displayed by
1791           KCachegrind.
1792
1793       --compress-strings=<no|yes> [default: yes]
1794           This option influences the output format of the profile data. It
1795           specifies whether strings (file and function names) should be
1796           identified by numbers. This shrinks the file, but makes it more
1797           difficult for humans to read (which is not recommended in any
1798           case).
1799
1800       --compress-pos=<no|yes> [default: yes]
1801           This option influences the output format of the profile data. It
1802           specifies whether numerical positions are always specified as
1803           absolute values or are allowed to be relative to previous numbers.
1804           This shrinks the file size.
1805
1806       --combine-dumps=<no|yes> [default: no]
1807           When enabled, when multiple profile data parts are to be generated
1808           these parts are appended to the same output file. Not recommended.
1809
1810       --dump-every-bb=<count> [default: 0, never]
1811           Dump profile data every count basic blocks. Whether a dump is
1812           needed is only checked when Valgrind's internal scheduler is run.
1813           Therefore, the minimum setting useful is about 100000. The count is
1814           a 64-bit value to make long dump periods possible.
1815
1816       --dump-before=<function>
1817           Dump when entering function.
1818
1819       --zero-before=<function>
1820           Zero all costs when entering function.
1821
1822       --dump-after=<function>
1823           Dump when leaving function.
1824
1825       --instr-atstart=<yes|no> [default: yes]
1826           Specify if you want Callgrind to start simulation and profiling
1827           from the beginning of the program. When set to no, Callgrind will
1828           not be able to collect any information, including calls, but it
1829           will have at most a slowdown of around 4, which is the minimum
1830           Valgrind overhead. Instrumentation can be interactively enabled via
1831           callgrind_control -i on.
1832
1833           Note that the resulting call graph will most probably not contain
1834           main, but will contain all the functions executed after
1835           instrumentation was enabled. Instrumentation can also be
1836           programmatically enabled/disabled. See the Callgrind include file
1837           callgrind.h for the macro you have to use in your source code.
1838
1839           For cache simulation, results will be less accurate when switching
1840           on instrumentation later in the program run, as the simulator
1841           starts with an empty cache at that moment. Switch on event
1842           collection later to cope with this error.
1843
1844       --collect-atstart=<yes|no> [default: yes]
1845           Specify whether event collection is enabled at beginning of the
1846           profile run.
1847
1848           To only look at parts of your program, you have two possibilities:
1849
1850            1. Zero event counters before entering the program part you want
1851               to profile, and dump the event counters to a file after leaving
1852               that program part.
1853
1854            2. Switch on/off collection state as needed to only see event
1855               counters happening while inside of the program part you want to
1856               profile.
1857
1858           The second option can be used if the program part you want to
1859           profile is called many times. Option 1, i.e. creating a lot of
1860           dumps is not practical here.
1861
1862           Collection state can be toggled at entry and exit of a given
1863           function with the option --toggle-collect. If you use this option,
1864           collection state should be disabled at the beginning. Note that the
1865           specification of --toggle-collect implicitly sets
1866           --collect-state=no.
1867
1868           Collection state can be toggled also by inserting the client
1869           request CALLGRIND_TOGGLE_COLLECT ; at the needed code positions.
1870
1871       --toggle-collect=<function>
1872           Toggle collection on entry/exit of function.
1873
1874       --collect-jumps=<no|yes> [default: no]
1875           This specifies whether information for (conditional) jumps should
1876           be collected. As above, callgrind_annotate currently is not able to
1877           show you the data. You have to use KCachegrind to get jump arrows
1878           in the annotated code.
1879
1880       --collect-systime=<no|yes|msec|usec|nsec> [default: no]
1881           This specifies whether information for system call times should be
1882           collected.
1883
1884           The value no indicates to record no system call information.
1885
1886           The other values indicate to record the number of system calls done
1887           (sysCount event) and the elapsed time (sysTime event) spent in
1888           system calls. The --collect-systime value gives the unit used for
1889           sysTime : milli seconds, micro seconds or nano seconds. With the
1890           value nsec, callgrind also records the cpu time spent during system
1891           calls (sysCpuTime).
1892
1893           The value yes is a synonym of msec. The value nsec is not supported
1894           on Darwin.
1895
1896       --collect-bus=<no|yes> [default: no]
1897           This specifies whether the number of global bus events executed
1898           should be collected. The event type "Ge" is used for these events.
1899
1900       --cache-sim=<yes|no> [default: no]
1901           Specify if you want to do full cache simulation. By default, only
1902           instruction read accesses will be counted ("Ir"). With cache
1903           simulation, further event counters are enabled: Cache misses on
1904           instruction reads ("I1mr"/"ILmr"), data read accesses ("Dr") and
1905           related cache misses ("D1mr"/"DLmr"), data write accesses ("Dw")
1906           and related cache misses ("D1mw"/"DLmw"). For more information, see
1907           Cachegrind: a cache and branch-prediction profiler.
1908
1909       --branch-sim=<yes|no> [default: no]
1910           Specify if you want to do branch prediction simulation. Further
1911           event counters are enabled: Number of executed conditional branches
1912           and related predictor misses ("Bc"/"Bcm"), executed indirect jumps
1913           and related misses of the jump address predictor ("Bi"/"Bim").
1914

HELGRIND OPTIONS

1916       --free-is-write=no|yes [default: no]
1917           When enabled (not the default), Helgrind treats freeing of heap
1918           memory as if the memory was written immediately before the free.
1919           This exposes races where memory is referenced by one thread, and
1920           freed by another, but there is no observable synchronisation event
1921           to ensure that the reference happens before the free.
1922
1923           This functionality is new in Valgrind 3.7.0, and is regarded as
1924           experimental. It is not enabled by default because its interaction
1925           with custom memory allocators is not well understood at present.
1926           User feedback is welcomed.
1927
1928       --track-lockorders=no|yes [default: yes]
1929           When enabled (the default), Helgrind performs lock order
1930           consistency checking. For some buggy programs, the large number of
1931           lock order errors reported can become annoying, particularly if
1932           you're only interested in race errors. You may therefore find it
1933           helpful to disable lock order checking.
1934
1935       --history-level=none|approx|full [default: full]
1936           --history-level=full (the default) causes Helgrind collects enough
1937           information about "old" accesses that it can produce two stack
1938           traces in a race report -- both the stack trace for the current
1939           access, and the trace for the older, conflicting access. To limit
1940           memory usage, "old" accesses stack traces are limited to a maximum
1941           of 8 entries, even if --num-callers value is bigger.
1942
1943           Collecting such information is expensive in both speed and memory,
1944           particularly for programs that do many inter-thread synchronisation
1945           events (locks, unlocks, etc). Without such information, it is more
1946           difficult to track down the root causes of races. Nonetheless, you
1947           may not need it in situations where you just want to check for the
1948           presence or absence of races, for example, when doing regression
1949           testing of a previously race-free program.
1950
1951           --history-level=none is the opposite extreme. It causes Helgrind
1952           not to collect any information about previous accesses. This can be
1953           dramatically faster than --history-level=full.
1954
1955           --history-level=approx provides a compromise between these two
1956           extremes. It causes Helgrind to show a full trace for the later
1957           access, and approximate information regarding the earlier access.
1958           This approximate information consists of two stacks, and the
1959           earlier access is guaranteed to have occurred somewhere between
1960           program points denoted by the two stacks. This is not as useful as
1961           showing the exact stack for the previous access (as
1962           --history-level=full does), but it is better than nothing, and it
1963           is almost as fast as --history-level=none.
1964
1965       --delta-stacktrace=no|yes [default: yes on linux amd64/x86]
1966           This flag only has any effect at --history-level=full.
1967
1968           --delta-stacktrace configures the way Helgrind captures the
1969           stacktraces for the option --history-level=full. Such a stacktrace
1970           is typically needed each time a new piece of memory is read or
1971           written in a basic block of instructions.
1972
1973           --delta-stacktrace=no causes Helgrind to compute a full history
1974           stacktrace from the unwind info each time a stacktrace is needed.
1975
1976           --delta-stacktrace=yes indicates to Helgrind to derive a new
1977           stacktrace from the previous stacktrace, as long as there was no
1978           call instruction, no return instruction, or any other instruction
1979           changing the call stack since the previous stacktrace was captured.
1980           If no such instruction was executed, the new stacktrace can be
1981           derived from the previous stacktrace by just changing the top frame
1982           to the current program counter. This option can speed up Helgrind
1983           by 25% when using --history-level=full.
1984
1985           The following aspects have to be considered when using
1986           --delta-stacktrace=yes :
1987
1988           •   In some cases (for example in a function prologue), the
1989               valgrind unwinder might not properly unwind the stack, due to
1990               some limitations and/or due to wrong unwind info. When using
1991               --delta-stacktrace=yes, the wrong stack trace captured in the
1992               function prologue will be kept till the next call or return.
1993
1994           •   On the other hand, --delta-stacktrace=yes sometimes helps to
1995               obtain a correct stacktrace, for example when the unwind info
1996               allows a correct stacktrace to be done in the beginning of the
1997               sequence, but not later on in the instruction sequence.
1998
1999           •   Determining which instructions are changing the callstack is
2000               partially based on platform dependent heuristics, which have to
2001               be tuned/validated specifically for the platform. Also,
2002               unwinding in a function prologue must be good enough to allow
2003               using --delta-stacktrace=yes. Currently, the option
2004               --delta-stacktrace=yes has been reasonably validated only on
2005               linux x86 32 bits and linux amd64 64 bits. For more details
2006               about how to validate --delta-stacktrace=yes, see debug option
2007               --hg-sanity-flags and the function check_cached_rcec_ok in
2008               libhb_core.c.
2009
2010
2011       --conflict-cache-size=N [default: 1000000]
2012           This flag only has any effect at --history-level=full.
2013
2014           Information about "old" conflicting accesses is stored in a cache
2015           of limited size, with LRU-style management. This is necessary
2016           because it isn't practical to store a stack trace for every single
2017           memory access made by the program. Historical information on not
2018           recently accessed locations is periodically discarded, to free up
2019           space in the cache.
2020
2021           This option controls the size of the cache, in terms of the number
2022           of different memory addresses for which conflicting access
2023           information is stored. If you find that Helgrind is showing race
2024           errors with only one stack instead of the expected two stacks, try
2025           increasing this value.
2026
2027           The minimum value is 10,000 and the maximum is 30,000,000 (thirty
2028           times the default value). Increasing the value by 1 increases
2029           Helgrind's memory requirement by very roughly 100 bytes, so the
2030           maximum value will easily eat up three extra gigabytes or so of
2031           memory.
2032
2033       --check-stack-refs=no|yes [default: yes]
2034           By default Helgrind checks all data memory accesses made by your
2035           program. This flag enables you to skip checking for accesses to
2036           thread stacks (local variables). This can improve performance, but
2037           comes at the cost of missing races on stack-allocated data.
2038
2039       --ignore-thread-creation=<yes|no> [default: no]
2040           Controls whether all activities during thread creation should be
2041           ignored. By default enabled only on Solaris. Solaris provides
2042           higher throughput, parallelism and scalability than other operating
2043           systems, at the cost of more fine-grained locking activity. This
2044           means for example that when a thread is created under glibc, just
2045           one big lock is used for all thread setup. Solaris libc uses
2046           several fine-grained locks and the creator thread resumes its
2047           activities as soon as possible, leaving for example stack and TLS
2048           setup sequence to the created thread. This situation confuses
2049           Helgrind as it assumes there is some false ordering in place
2050           between creator and created thread; and therefore many types of
2051           race conditions in the application would not be reported. To
2052           prevent such false ordering, this command line option is set to yes
2053           by default on Solaris. All activity (loads, stores, client
2054           requests) is therefore ignored during:
2055
2056           •   pthread_create() call in the creator thread
2057
2058           •   thread creation phase (stack and TLS setup) in the created
2059               thread
2060
2061           Also new memory allocated during thread creation is untracked, that
2062           is race reporting is suppressed there. DRD does the same thing
2063           implicitly. This is necessary because Solaris libc caches many
2064           objects and reuses them for different threads and that confuses
2065           Helgrind.
2066

DRD OPTIONS

2068       --check-stack-var=<yes|no> [default: no]
2069           Controls whether DRD detects data races on stack variables.
2070           Verifying stack variables is disabled by default because most
2071           programs do not share stack variables over threads.
2072
2073       --exclusive-threshold=<n> [default: off]
2074           Print an error message if any mutex or writer lock has been held
2075           longer than the time specified in milliseconds. This option enables
2076           the detection of lock contention.
2077
2078       --join-list-vol=<n> [default: 10]
2079           Data races that occur between a statement at the end of one thread
2080           and another thread can be missed if memory access information is
2081           discarded immediately after a thread has been joined. This option
2082           allows one to specify for how many joined threads memory access
2083           information should be retained.
2084
2085        --first-race-only=<yes|no> [default: no]
2086           Whether to report only the first data race that has been detected
2087           on a memory location or all data races that have been detected on a
2088           memory location.
2089
2090        --free-is-write=<yes|no> [default: no]
2091           Whether to report races between accessing memory and freeing
2092           memory. Enabling this option may cause DRD to run slightly slower.
2093           Notes:
2094
2095           •   Don't enable this option when using custom memory allocators
2096               that use the VG_USERREQ__MALLOCLIKE_BLOCK and
2097               VG_USERREQ__FREELIKE_BLOCK because that would result in false
2098               positives.
2099
2100           •   Don't enable this option when using reference-counted objects
2101               because that will result in false positives, even when that
2102               code has been annotated properly with ANNOTATE_HAPPENS_BEFORE
2103               and ANNOTATE_HAPPENS_AFTER. See e.g. the output of the
2104               following command for an example: valgrind --tool=drd
2105               --free-is-write=yes drd/tests/annotate_smart_pointer.
2106
2107        --report-signal-unlocked=<yes|no> [default: yes]
2108           Whether to report calls to pthread_cond_signal and
2109           pthread_cond_broadcast where the mutex associated with the signal
2110           through pthread_cond_wait or pthread_cond_timed_waitis not locked
2111           at the time the signal is sent. Sending a signal without holding a
2112           lock on the associated mutex is a common programming error which
2113           can cause subtle race conditions and unpredictable behavior. There
2114           exist some uncommon synchronization patterns however where it is
2115           safe to send a signal without holding a lock on the associated
2116           mutex.
2117
2118       --segment-merging=<yes|no> [default: yes]
2119           Controls segment merging. Segment merging is an algorithm to limit
2120           memory usage of the data race detection algorithm. Disabling
2121           segment merging may improve the accuracy of the so-called 'other
2122           segments' displayed in race reports but can also trigger an out of
2123           memory error.
2124
2125       --segment-merging-interval=<n> [default: 10]
2126           Perform segment merging only after the specified number of new
2127           segments have been created. This is an advanced configuration
2128           option that allows one to choose whether to minimize DRD's memory
2129           usage by choosing a low value or to let DRD run faster by choosing
2130           a slightly higher value. The optimal value for this parameter
2131           depends on the program being analyzed. The default value works well
2132           for most programs.
2133
2134       --shared-threshold=<n> [default: off]
2135           Print an error message if a reader lock has been held longer than
2136           the specified time (in milliseconds). This option enables the
2137           detection of lock contention.
2138
2139       --show-confl-seg=<yes|no> [default: yes]
2140           Show conflicting segments in race reports. Since this information
2141           can help to find the cause of a data race, this option is enabled
2142           by default. Disabling this option makes the output of DRD more
2143           compact.
2144
2145       --show-stack-usage=<yes|no> [default: no]
2146           Print stack usage at thread exit time. When a program creates a
2147           large number of threads it becomes important to limit the amount of
2148           virtual memory allocated for thread stacks. This option makes it
2149           possible to observe how much stack memory has been used by each
2150           thread of the client program. Note: the DRD tool itself allocates
2151           some temporary data on the client thread stack. The space necessary
2152           for this temporary data must be allocated by the client program
2153           when it allocates stack memory, but is not included in stack usage
2154           reported by DRD.
2155
2156       --ignore-thread-creation=<yes|no> [default: no]
2157           Controls whether all activities during thread creation should be
2158           ignored. By default enabled only on Solaris. Solaris provides
2159           higher throughput, parallelism and scalability than other operating
2160           systems, at the cost of more fine-grained locking activity. This
2161           means for example that when a thread is created under glibc, just
2162           one big lock is used for all thread setup. Solaris libc uses
2163           several fine-grained locks and the creator thread resumes its
2164           activities as soon as possible, leaving for example stack and TLS
2165           setup sequence to the created thread. This situation confuses DRD
2166           as it assumes there is some false ordering in place between creator
2167           and created thread; and therefore many types of race conditions in
2168           the application would not be reported. To prevent such false
2169           ordering, this command line option is set to yes by default on
2170           Solaris. All activity (loads, stores, client requests) is therefore
2171           ignored during:
2172
2173           •   pthread_create() call in the creator thread
2174
2175           •   thread creation phase (stack and TLS setup) in the created
2176               thread
2177
2178       --trace-addr=<address> [default: none]
2179           Trace all load and store activity for the specified address. This
2180           option may be specified more than once.
2181
2182       --ptrace-addr=<address> [default: none]
2183           Trace all load and store activity for the specified address and
2184           keep doing that even after the memory at that address has been
2185           freed and reallocated.
2186
2187       --trace-alloc=<yes|no> [default: no]
2188           Trace all memory allocations and deallocations. May produce a huge
2189           amount of output.
2190
2191       --trace-barrier=<yes|no> [default: no]
2192           Trace all barrier activity.
2193
2194       --trace-cond=<yes|no> [default: no]
2195           Trace all condition variable activity.
2196
2197       --trace-fork-join=<yes|no> [default: no]
2198           Trace all thread creation and all thread termination events.
2199
2200       --trace-hb=<yes|no> [default: no]
2201           Trace execution of the ANNOTATE_HAPPENS_BEFORE(),
2202           ANNOTATE_HAPPENS_AFTER() and ANNOTATE_HAPPENS_DONE() client
2203           requests.
2204
2205       --trace-mutex=<yes|no> [default: no]
2206           Trace all mutex activity.
2207
2208       --trace-rwlock=<yes|no> [default: no]
2209           Trace all reader-writer lock activity.
2210
2211       --trace-semaphore=<yes|no> [default: no]
2212           Trace all semaphore activity.
2213

MASSIF OPTIONS

2215       --heap=<yes|no> [default: yes]
2216           Specifies whether heap profiling should be done.
2217
2218       --heap-admin=<size> [default: 8]
2219           If heap profiling is enabled, gives the number of administrative
2220           bytes per block to use. This should be an estimate of the average,
2221           since it may vary. For example, the allocator used by glibc on
2222           Linux requires somewhere between 4 to 15 bytes per block, depending
2223           on various factors. That allocator also requires admin space for
2224           freed blocks, but Massif cannot account for this.
2225
2226       --stacks=<yes|no> [default: no]
2227           Specifies whether stack profiling should be done. This option slows
2228           Massif down greatly, and so is off by default. Note that Massif
2229           assumes that the main stack has size zero at start-up. This is not
2230           true, but doing otherwise accurately is difficult. Furthermore,
2231           starting at zero better indicates the size of the part of the main
2232           stack that a user program actually has control over.
2233
2234       --pages-as-heap=<yes|no> [default: no]
2235           Tells Massif to profile memory at the page level rather than at the
2236           malloc'd block level. See above for details.
2237
2238       --depth=<number> [default: 30]
2239           Maximum depth of the allocation trees recorded for detailed
2240           snapshots. Increasing it will make Massif run somewhat more slowly,
2241           use more memory, and produce bigger output files.
2242
2243       --alloc-fn=<name>
2244           Functions specified with this option will be treated as though they
2245           were a heap allocation function such as malloc. This is useful for
2246           functions that are wrappers to malloc or new, which can fill up the
2247           allocation trees with uninteresting information. This option can be
2248           specified multiple times on the command line, to name multiple
2249           functions.
2250
2251           Note that the named function will only be treated this way if it is
2252           the top entry in a stack trace, or just below another function
2253           treated this way. For example, if you have a function malloc1 that
2254           wraps malloc, and malloc2 that wraps malloc1, just specifying
2255           --alloc-fn=malloc2 will have no effect. You need to specify
2256           --alloc-fn=malloc1 as well. This is a little inconvenient, but the
2257           reason is that checking for allocation functions is slow, and it
2258           saves a lot of time if Massif can stop looking through the stack
2259           trace entries as soon as it finds one that doesn't match rather
2260           than having to continue through all the entries.
2261
2262           Note that C++ names are demangled. Note also that overloaded C++
2263           names must be written in full. Single quotes may be necessary to
2264           prevent the shell from breaking them up. For example:
2265
2266               --alloc-fn='operator new(unsigned, std::nothrow_t const&)'
2267
2268
2269       --ignore-fn=<name>
2270           Any direct heap allocation (i.e. a call to malloc, new, etc, or a
2271           call to a function named by an --alloc-fn option) that occurs in a
2272           function specified by this option will be ignored. This is mostly
2273           useful for testing purposes. This option can be specified multiple
2274           times on the command line, to name multiple functions.
2275
2276           Any realloc of an ignored block will also be ignored, even if the
2277           realloc call does not occur in an ignored function. This avoids the
2278           possibility of negative heap sizes if ignored blocks are shrunk
2279           with realloc.
2280
2281           The rules for writing C++ function names are the same as for
2282           --alloc-fn above.
2283
2284       --threshold=<m.n> [default: 1.0]
2285           The significance threshold for heap allocations, as a percentage of
2286           total memory size. Allocation tree entries that account for less
2287           than this will be aggregated. Note that this should be specified in
2288           tandem with ms_print's option of the same name.
2289
2290       --peak-inaccuracy=<m.n> [default: 1.0]
2291           Massif does not necessarily record the actual global memory
2292           allocation peak; by default it records a peak only when the global
2293           memory allocation size exceeds the previous peak by at least 1.0%.
2294           This is because there can be many local allocation peaks along the
2295           way, and doing a detailed snapshot for every one would be expensive
2296           and wasteful, as all but one of them will be later discarded. This
2297           inaccuracy can be changed (even to 0.0%) via this option, but
2298           Massif will run drastically slower as the number approaches zero.
2299
2300       --time-unit=<i|ms|B> [default: i]
2301           The time unit used for the profiling. There are three
2302           possibilities: instructions executed (i), which is good for most
2303           cases; real (wallclock) time (ms, i.e. milliseconds), which is
2304           sometimes useful; and bytes allocated/deallocated on the heap
2305           and/or stack (B), which is useful for very short-run programs, and
2306           for testing purposes, because it is the most reproducible across
2307           different machines.
2308
2309       --detailed-freq=<n> [default: 10]
2310           Frequency of detailed snapshots. With --detailed-freq=1, every
2311           snapshot is detailed.
2312
2313       --max-snapshots=<n> [default: 100]
2314           The maximum number of snapshots recorded. If set to N, for all
2315           programs except very short-running ones, the final number of
2316           snapshots will be between N/2 and N.
2317
2318       --massif-out-file=<file> [default: massif.out.%p]
2319           Write the profile data to file rather than to the default output
2320           file, massif.out.<pid>. The %p and %q format specifiers can be used
2321           to embed the process ID and/or the contents of an environment
2322           variable in the name, as is the case for the core option
2323           --log-file.
2324

BBV OPTIONS

2326       --bb-out-file=<name> [default: bb.out.%p]
2327           This option selects the name of the basic block vector file. The %p
2328           and %q format specifiers can be used to embed the process ID and/or
2329           the contents of an environment variable in the name, as is the case
2330           for the core option --log-file.
2331
2332       --pc-out-file=<name> [default: pc.out.%p]
2333           This option selects the name of the PC file. This file holds
2334           program counter addresses and function name info for the various
2335           basic blocks. This can be used in conjunction with the basic block
2336           vector file to fast-forward via function names instead of just
2337           instruction counts. The %p and %q format specifiers can be used to
2338           embed the process ID and/or the contents of an environment variable
2339           in the name, as is the case for the core option --log-file.
2340
2341       --interval-size=<number> [default: 100000000]
2342           This option selects the size of the interval to use. The default is
2343           100 million instructions, which is a commonly used value. Other
2344           sizes can be used; smaller intervals can help programs with
2345           finer-grained phases. However smaller interval size can lead to
2346           accuracy issues due to warm-up effects (When fast-forwarding the
2347           various architectural features will be un-initialized, and it will
2348           take some number of instructions before they "warm up" to the state
2349           a full simulation would be at without the fast-forwarding. Large
2350           interval sizes tend to mitigate this.)
2351
2352       --instr-count-only [default: no]
2353           This option tells the tool to only display instruction count
2354           totals, and to not generate the actual basic block vector file.
2355           This is useful for debugging, and for gathering instruction count
2356           info without generating the large basic block vector files.
2357

LACKEY OPTIONS

2359       --basic-counts=<no|yes> [default: yes]
2360           When enabled, Lackey prints the following statistics and
2361           information about the execution of the client program:
2362
2363            1. The number of calls to the function specified by the --fnname
2364               option (the default is main). If the program has had its
2365               symbols stripped, the count will always be zero.
2366
2367            2. The number of conditional branches encountered and the number
2368               and proportion of those taken.
2369
2370            3. The number of superblocks entered and completed by the program.
2371               Note that due to optimisations done by the JIT, this is not at
2372               all an accurate value.
2373
2374            4. The number of guest (x86, amd64, ppc, etc.) instructions and IR
2375               statements executed. IR is Valgrind's RISC-like intermediate
2376               representation via which all instrumentation is done.
2377
2378            5. Ratios between some of these counts.
2379
2380            6. The exit code of the client program.
2381
2382       --detailed-counts=<no|yes> [default: no]
2383           When enabled, Lackey prints a table containing counts of loads,
2384           stores and ALU operations, differentiated by their IR types. The IR
2385           types are identified by their IR name ("I1", "I8", ... "I128",
2386           "F32", "F64", and "V128").
2387
2388       --trace-mem=<no|yes> [default: no]
2389           When enabled, Lackey prints the size and address of almost every
2390           memory access made by the program. See the comments at the top of
2391           the file lackey/lk_main.c for details about the output format, how
2392           it works, and inaccuracies in the address trace. Note that this
2393           option produces immense amounts of output.
2394
2395       --trace-superblocks=<no|yes> [default: no]
2396           When enabled, Lackey prints out the address of every superblock (a
2397           single entry, multiple exit, linear chunk of code) executed by the
2398           program. This is primarily of interest to Valgrind developers. See
2399           the comments at the top of the file lackey/lk_main.c for details
2400           about the output format. Note that this option produces large
2401           amounts of output.
2402
2403       --fnname=<name> [default: main]
2404           Changes the function for which calls are counted when
2405           --basic-counts=yes is specified.
2406

DEBUGINFOD

2408       Valgrind supports the downloading of debuginfo files via debuginfod, an
2409       HTTP server for distributing ELF/DWARF debugging information. When a
2410       debuginfo file cannot be found locally, Valgrind is able to query
2411       debuginfod servers for the file using the file's build-id.
2412
2413       In order to use this feature debuginfod-find must be installed and the
2414       $DEBUGINFOD_URLS environment variable must contain space-separated URLs
2415       of debuginfod servers. Valgrind does not support debuginfod-find
2416       verbose output that is normally enabled with $DEBUGINFOD_PROGRESS and
2417       $DEBUGINFOD_VERBOSE. These environment variables will be ignored. This
2418       feature is supported on Linux only.
2419
2420       For more information regarding debuginfod, see Elfutils Debuginfod[1] .
2421

SEE ALSO

2423       cg_annotate(1), callgrind_annotate(1), callgrind_control(1),
2424       ms_print(1), $INSTALL/share/doc/valgrind/html/index.html or
2425       http://www.valgrind.org/docs/manual/index.html, Debugging your program
2426       using Valgrind's gdbserver and GDB[2] vgdb[3], Valgrind monitor
2427       commands[4], The Commentary[5], Scheduling and Multi-Thread
2428       Performance[6], Cachegrind: a cache and branch-prediction profiler[7].
2429       Execution Trees[8]
2430

AUTHOR

2432       See the AUTHORS file in the valgrind distribution for a comprehensive
2433       list of authors.
2434
2435       This manpage was written by Andres Roldan <aroldan@debian.org> and the
2436       Valgrind developers.
2437

NOTES

2439        1. Elfutils Debuginfod
2440           https://sourceware.org/elfutils/Debuginfod.html
2441
2442        2. Debugging your program using Valgrind's gdbserver and GDB
2443           http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver
2444
2445        3. vgdb
2446           http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.vgdb
2447
2448        4. Valgrind monitor commands
2449           http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.valgrind-monitor-commands
2450
2451        5. The Commentary
2452           http://www.valgrind.org/docs/manual/manual-core.html#manual-core.comment
2453
2454        6. Scheduling and Multi-Thread Performance
2455           http://www.valgrind.org/docs/manual/manual-core.html#manual-core.pthreads_perf_sched
2456
2457        7. Cachegrind: a cache and branch-prediction profiler
2458           http://www.valgrind.org/docs/manual/cg-manual.html
2459
2460        8. Execution Trees
2461           http://www.valgrind.org/docs/manual/manual-core.html#manual-core.xtree
2462
2463
2464
2465Release 3.20.0                    10/24/2022                       VALGRIND(1)
Impressum