usage: valgrind [options] prog-and-args

  tool-selection option, with default in [ ]:
    --tool=<name>             use the Valgrind tool named <name> [memcheck]
                              available tools are:
                              memcheck cachegrind callgrind helgrind drd
                              massif dhat lackey none exp-bbv

  basic user options for all Valgrind tools, with defaults in [ ]:
    -h --help                 show this message
    --help-debug              show this message, plus debugging options
    --help-dyn-options        show the dynamically changeable options
    --version                 show version
    -q --quiet                run silently; only print error msgs
    -v --verbose              be more verbose -- show misc extra info
    --trace-children=no|yes   Valgrind-ise child processes (follow execve)? [no]
    --trace-children-skip=patt1,patt2,...    specifies a list of executables
                              that --trace-children=yes should not trace into
    --trace-children-skip-by-arg=patt1,patt2,...   same as --trace-children-skip=
                              but check the argv[] entries for children, rather
                              than the exe name, to make a follow/no-follow decision
    --child-silent-after-fork=no|yes omit child output between fork & exec? [no]
    --vgdb=no|yes|full        activate gdbserver? [yes]
                              full is slower but provides precise watchpoint/step
    --vgdb-error=<number>     invoke gdbserver after <number> errors [999999999]
                              to get started quickly, use --vgdb-error=0
                              and follow the on-screen directions
    --vgdb-stop-at=event1,event2,... invoke gdbserver for given events [none]
         where event is one of:
           startup exit abexit valgrindabexit all none
    --track-fds=no|yes|all    track open file descriptors? [no]
                              all includes reporting stdin, stdout and stderr
    --time-stamp=no|yes       add timestamps to log messages? [no]
    --log-fd=<number>         log messages to file descriptor [2=stderr]
    --log-file=<file>         log messages to <file>
    --log-socket=ipaddr:port  log messages to socket ipaddr:port
    --enable-debuginfod=no|yes query debuginfod servers for missing
                              debuginfo [yes]

  user options for Valgrind tools that report errors:
    --xml=yes                 emit error output in XML (some tools only)
    --xml-fd=<number>         XML output to file descriptor
    --xml-file=<file>         XML output to <file>
    --xml-socket=ipaddr:port  XML output to socket ipaddr:port
    --xml-user-comment=STR    copy STR verbatim into XML output
    --demangle=no|yes         automatically demangle C++ names? [yes]
    --num-callers=<number>    show <number> callers in stack traces [12]
    --error-limit=no|yes      stop showing new errors if too many? [yes]
    --exit-on-first-error=no|yes exit code on the first error found? [no]
    --error-exitcode=<number> exit code to return if errors found [0=disable]
    --error-markers=<begin>,<end> add lines with begin/end markers before/after
                              each error output in plain text mode [none]
    --show-error-list=no|yes  show detected errors list and
                              suppression counts at exit [no]
    -s                        same as --show-error-list=yes
    --keep-debuginfo=no|yes   Keep symbols etc for unloaded code [no]
                              This allows saved stack traces (e.g. memory leaks)
                              to include file/line info for code that has been
                              dlclose'd (or similar)
    --show-below-main=no|yes  continue stack traces below main() [no]
    --default-suppressions=yes|no
                              load default suppressions [yes]
    --suppressions=<filename> suppress errors described in <filename>
    --gen-suppressions=no|yes|all    print suppressions for errors? [no]
    --input-fd=<number>       file descriptor for input [0=stdin]
    --dsymutil=no|yes         run dsymutil on Mac OS X when helpful? [yes]
    --max-stackframe=<number> assume stack switch for SP changes larger
                              than <number> bytes [2000000]
    --main-stacksize=<number> set size of main thread's stack (in bytes)
                              [min(max(current 'ulimit' value,1MB),16MB)]

  user options for Valgrind tools that replace malloc:
    --alignment=<number>      set minimum alignment of heap allocations [not used by this tool]
    --redzone-size=<number>   set minimum size of redzones added before/after
                              heap blocks (in bytes). [not used by this tool]
    --xtree-memory=none|allocs|full   profile heap memory in an xtree [none]
                              and produces a report at the end of the execution
                              none: no profiling, allocs: current allocated
                              size/blocks, full: profile current and cumulative
                              allocated size/blocks and freed size/blocks.
    --xtree-memory-file=<file>   xtree memory report file [xtmemory.kcg.%p]

  uncommon user options for all Valgrind tools:
    --fullpath-after=         (with nothing after the '=')
                              show full source paths in call stacks
    --fullpath-after=string   like --fullpath-after=, but only show the
                              part of the path after 'string'.  Allows removal
                              of path prefixes.  Use this flag multiple times
                              to specify a set of prefixes to remove.
    --extra-debuginfo-path=path    absolute path to search for additional
                              debug symbols, in addition to existing default
                              well known search paths.
    --debuginfo-server=ipaddr:port    also query this server
                              (valgrind-di-server) for debug symbols
    --allow-mismatched-debuginfo=no|yes  [no]
                              for the above two flags only, accept debuginfo
                              objects that don't "match" the main object
    --smc-check=none|stack|all|all-non-file [all-non-file]
                              checks for self-modifying code: none, only for
                              code found in stacks, for all code, or for all
                              code except that from file-backed mappings
    --read-inline-info=yes|no read debug info about inlined function calls
                              and use it to do better stack traces.
                              [yes] on Linux/Android/Solaris for the tools
                              Memcheck/Massif/Helgrind/DRD only.
                              [no] for all other tools and platforms.
    --read-var-info=yes|no    read debug info on stack and global variables
                              and use it to print better error messages in
                              tools that make use of it (Memcheck, Helgrind,
                              DRD) [no]
    --vgdb-poll=<number>      gdbserver poll max every <number> basic blocks [5000] 
    --vgdb-shadow-registers=no|yes   let gdb see the shadow registers [no]
    --vgdb-prefix=<prefix>    prefix for vgdb FIFOs [.../vgdb-pipe]
    --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]
    --run-cxx-freeres=no|yes  free up libstdc++ memory at exit on Linux
                              and Solaris? [yes]
    --sim-hints=hint1,hint2,...  activate unusual sim behaviours [none] 
         where hint is one of:
           lax-ioctls lax-doors fuse-compatible enable-outer
           no-inner-prefix no-nptl-pthread-stackcache fallback-llsc none
    --scheduling-quantum=<number>  thread-scheduling timeslice in number of
           basic blocks [100000]
    --fair-sched=no|yes|try   schedule threads fairly on multicore systems [no]
    --kernel-variant=variant1,variant2,...
         handle non-standard kernel variants [none]
         where variant is one of:
           bproc android-no-hw-tls
           android-gpu-sgx5xx android-gpu-adreno3xx none
    --merge-recursive-frames=<number>  merge frames between identical
           program counters in max <number> frames) [0]
    --num-transtab-sectors=<number> size of translated code cache [32]
           more sectors may increase performance, but use more memory.
    --avg-transtab-entry-size=<number> avg size in bytes of a translated
           basic block [0, meaning use tool provided default]
    --aspace-minaddr=0xPP     avoid mapping memory below 0xPP [guessed]
    --valgrind-stacksize=<number> size of valgrind (host) thread's stack
                               (in bytes) [1048576]
    --show-emwarns=no|yes     show warnings about emulation limits? [no]
    --require-text-symbol=:sonamepattern:symbolpattern    abort run if the
                              stated shared object doesn't have the stated
                              text symbol.  Patterns can contain ? and *.
    --soname-synonyms=syn1=pattern1,syn2=pattern2,... synonym soname
              specify patterns for function wrapping or replacement.
              To use a non-libc malloc library that is
                  in the main exe:  --soname-synonyms=somalloc=NONE
                  in libxyzzy.so:   --soname-synonyms=somalloc=libxyzzy.so
    --sigill-diagnostics=yes|no  warn about illegal instructions? [yes]
    --unw-stack-scan-thresh=<number>   Enable stack-scan unwind if fewer
                  than <number> good frames found  [0, meaning "disabled"]
                  NOTE: stack scanning is only available on arm-linux.
    --unw-stack-scan-frames=<number>   Max number of frames that can be
                  recovered by stack scanning [5]
    --resync-filter=no|yes|verbose [yes on MacOS, no on other OSes]
              attempt to avoid expensive address-space-resync operations
    --max-threads=<number>    maximum number of threads that valgrind can
                              handle [500]
    --realloc-zero-bytes-frees=yes|no [yes on Linux glibc, no otherwise]
                              should calls to realloc with a size of 0
                              free memory and return NULL or
                              allocate/resize and return non-NULL

  user options for Nulgrind:
    (none)

  debugging options for all Valgrind tools:
    -d                        show verbose debugging output
    --stats=no|yes            show tool and core statistics [no]
    --sanity-level=<number>   level of sanity checking to do [1]
    --trace-flags=<XXXXXXXX>   show generated code? (X = 0|1) [00000000]
    --profile-flags=<XXXXXXXX> ditto, but for profiling (X = 0|1) [00000000]
    --profile-interval=<number> show profile every <number> event checks
                                [0, meaning only at the end of the run]
    --trace-notbelow=<number> only show BBs above <number> [999999999]
    --trace-notabove=<number> only show BBs below <number> [0]
    --trace-syscalls=no|yes   show all system calls? [no]
    --trace-signals=no|yes    show signal handling details? [no]
    --trace-symtab=no|yes     show symbol table details? [no]
    --trace-symtab-patt=<patt> limit debuginfo tracing to obj name <patt>
    --trace-cfi=no|yes        show call-frame-info details? [no]
    --debug-dump=syms         mimic /usr/bin/readelf --syms
    --debug-dump=line         mimic /usr/bin/readelf --debug-dump=line
    --debug-dump=frames       mimic /usr/bin/readelf --debug-dump=frames
    --trace-redir=no|yes      show redirection details? [no]
    --trace-sched=no|yes      show thread scheduler details? [no]
    --profile-heap=no|yes     profile Valgrind's own space use
    --core-redzone-size=<number>  set minimum size of redzones added before/after
                              heap blocks allocated for Valgrind internal use (in bytes) [4]
    --wait-for-gdb=yes|no     pause on startup to wait for gdb attach
    --sym-offsets=yes|no      show syms in form 'name+offset'? [no]
    --progress-interval=<number>  report progress every <number>
                                  CPU seconds [0, meaning disabled]
    --command-line-only=no|yes  only use command line options [no]

  Vex options for all Valgrind tools:
    --vex-iropt-verbosity=<0..9>           [0]
    --vex-iropt-level=<0..2>               [2]
    --vex-iropt-unroll-thresh=<0..400>     [120]
    --vex-guest-max-insns=<1..100>         [50]
    --vex-guest-chase=no|yes               [yes]
    Precise exception control.  Possible values for 'mode' are as follows
      and specify the minimum set of registers guaranteed to be correct
      immediately prior to memory access instructions:
         sp-at-mem-access          stack pointer only
         unwindregs-at-mem-access  registers needed for stack unwinding
         allregs-at-mem-access     all registers
         allregs-at-each-insn      all registers are always correct
      Default value for all 3 following flags is [unwindregs-at-mem-access].
      --vex-iropt-register-updates=mode   setting to use by default
      --px-default=mode      synonym for --vex-iropt-register-updates
      --px-file-backed=mode  optional setting for file-backed (non-JIT) code
    Tracing and profile control:
      --trace-flags and --profile-flags values (omit the middle space):
         1000 0000   show conversion into IR
         0100 0000   show after initial opt
         0010 0000   show after instrumentation
         0001 0000   show after second opt
         0000 1000   show after tree building
         0000 0100   show selecting insns
         0000 0010   show after reg-alloc
         0000 0001   show final assembly
         0000 0000   show summary profile only
        (Nb: you need --trace-notbelow and/or --trace-notabove
             with --trace-flags for full details)
    --vex-regalloc-version=2|3             [3]

  debugging options for Valgrind tools that report errors
    --dump-error=<number>     show translation for basic block associated
                              with <number>'th error context [0=show none]

  debugging options for Valgrind tools that replace malloc:
    --trace-malloc=no|yes     show client malloc details? [no]
    --xtree-compress-strings=no|yes   compress strings in xtree callgrind format [yes]

  debugging options for Nulgrind:
    (none)

  Extra options read from ~/.valgrindrc, $VALGRIND_OPTS, ./.valgrindrc

  Nulgrind is Copyright (C) 2002-2017, and GNU GPL'd, by Nicholas Nethercote.
  Valgrind is Copyright (C) 2000-2017, and GNU GPL'd, by Julian Seward et al.
  LibVEX is Copyright (C) 2004-2017, and GNU GPL'd, by OpenWorks LLP et al.

  Bug reports, feedback, admiration, abuse, etc, to: www.valgrind.org.

