usage: valgrind [options] prog-and-args

  tool-selection option, with default in [ ]:
    --tool=<name>             use the Valgrind tool named <name> [memcheck]

  basic user options for all Valgrind tools, with defaults in [ ]:
    -h --help                 show this message
    --help-debug              show this message, plus debugging 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
    --child-silent-after-fork=no|yes omit child output between fork & exec? [no]
    --track-fds=no|yes        track open file descriptors? [no]
    --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

  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]
    --error-exitcode=<number> exit code to return if errors found [0=disable]
    --show-below-main=no|yes  continue stack traces below main() [no]
    --suppressions=<filename> suppress errors described in <filename>
    --gen-suppressions=no|yes|all    print suppressions for errors? [no]
    --db-attach=no|yes        start debugger when errors detected? [no]
    --db-command=<command>    command to start debugger [... -nw %f %p]
    --input-fd=<number>       file descriptor for input [0=stdin]
    --dsymutil=no|yes         run dsymutil on Mac OS X when helpful? [no]
    --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)
                              [use current 'ulimit' value]

  user options for Valgrind tools that replace malloc:
    --alignment=<number>      set minimum alignment of heap allocations [...]

  uncommon user options for all Valgrind tools:
    --smc-check=none|stack|all  checks for self-modifying code: none,
                              only for code found in stacks, or all [stack]
    --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]
    --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]
    --sim-hints=hint1,hint2,...  known hints:
                                 lax-ioctls, enable-outer [none]
    --kernel-variant=variant1,variant2,...  known variants: bproc [none]
                              handle non-standard kernel variants
    --show-emwarns=no|yes     show warnings about emulation limits? [no]

  user options for Nulgrind:
    (none)

  debugging options for all Valgrind tools:
    --stats=no|yes            show tool and core statistics [no]
    -d                        show verbose debugging output
    --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]
    --trace-notbelow=<number> only show BBs above <number> [999999999]
    --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
    --wait-for-gdb=yes|no     pause on startup to wait for gdb attach
    --sym-offsets=yes|no      show syms in form 'name+offset' ? [no]
    --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-precise-memory-exns=no|yes [no]
    --vex-iropt-unroll-thresh=<0..400>     [120]
    --vex-guest-max-insns=<1..100>         [50]
    --vex-guest-chase-thresh=<0..99>       [10]
    --vex-guest-chase-cond=no|yes          [no]
    --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
      (Nb: you need --trace-notbelow with --trace-flags for full details)

  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]

  debugging options for Nulgrind:
    (none)

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

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

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

