general valgrind monitor commands:
  help [debug]            : monitor command help. With debug: + debugging commands
  v.wait [<ms>]           : sleep <ms> (default 0) then continue
  v.info all_errors       : show all errors found so far
  v.info last_error       : show last error found
  v.info location <addr>  : show information about location <addr>
  v.info n_errs_found [msg] : show the nr of errors found so far and the given msg
  v.info open_fds         : show open file descriptors (only if --track-fds=yes)
  v.kill                  : kill the Valgrind process
  v.set gdb_output        : set valgrind output to gdb
  v.set log_output        : set valgrind output to log
  v.set mixed_output      : set valgrind output to log, interactive output to gdb
  v.set merge-recursive-frames <num> : merge recursive calls in max <num> frames
  v.set vgdb-error <errornr> : debug me at error >= <errornr> 
memcheck monitor commands:
  get_vbits <addr> [<len>]
        returns validity bits for <len> (or 1) bytes at <addr>
            bit values 0 = valid, 1 = invalid, __ = unaddressable byte
        Example: get_vbits 0x........ 10
  make_memory [noaccess|undefined
                     |defined|Definedifaddressable] <addr> [<len>]
        mark <len> (or 1) bytes at <addr> with the given accessibility
  check_memory [addressable|defined] <addr> [<len>]
        check that <len> (or 1) bytes at <addr> have the given accessibility
            and outputs a description of <addr>
  leak_check [full*|summary]
                [kinds kind1,kind2,...|reachable|possibleleak*|definiteleak]
                [heuristics heur1,heur2,...]
                [increased*|changed|any]
                [unlimited*|limited <max_loss_records_output>]
            * = defaults
       where kind is one of:
         definite indirect possible reachable all none
       where heur is one of:
         stdstring length64 newarray multipleinheritance all none*
       Examples: leak_check
                 leak_check summary any
                 leak_check full kinds indirect,possible
                 leak_check full reachable any limited 100
  block_list <loss_record_nr>
        after a leak search, shows the list of blocks of <loss_record_nr>
  who_points_at <addr> [<len>]
        shows places pointing inside <len> (default 1) bytes at <addr>
        (with len 1, only shows "start pointers" pointing exactly to <addr>,
         with len > 1, will also show "interior pointers")
general valgrind monitor commands:
  help [debug]            : monitor command help. With debug: + debugging commands
  v.wait [<ms>]           : sleep <ms> (default 0) then continue
  v.info all_errors       : show all errors found so far
  v.info last_error       : show last error found
  v.info location <addr>  : show information about location <addr>
  v.info n_errs_found [msg] : show the nr of errors found so far and the given msg
  v.info open_fds         : show open file descriptors (only if --track-fds=yes)
  v.kill                  : kill the Valgrind process
  v.set gdb_output        : set valgrind output to gdb
  v.set log_output        : set valgrind output to log
  v.set mixed_output      : set valgrind output to log, interactive output to gdb
  v.set merge-recursive-frames <num> : merge recursive calls in max <num> frames
  v.set vgdb-error <errornr> : debug me at error >= <errornr> 
debugging valgrind internals monitor commands:
  v.do   expensive_sanity_check_general : do an expensive sanity check now
  v.info gdbserver_status : show gdbserver status
  v.info memory [aspacemgr] : show valgrind heap memory stats
     (with aspacemgr arg, also shows valgrind segments on log ouput)
  v.info exectxt          : show stacktraces and stats of all execontexts
  v.info scheduler        : show valgrind thread state and stacktrace
  v.info stats            : show various valgrind and tool stats
  v.set debuglog <level>  : set valgrind debug log level to <level>
  v.set hostvisibility [yes*|no] : (en/dis)ables access by gdb/gdbserver to
    Valgrind internal host status/memory
  v.translate <addr> [<traceflags>]  : debug translation of <addr> with <traceflags>
    (default traceflags 0b00100000 : show after instrumentation)
   An additional flag  0b100000000 allows to show gdbserver instrumentation
memcheck monitor commands:
  get_vbits <addr> [<len>]
        returns validity bits for <len> (or 1) bytes at <addr>
            bit values 0 = valid, 1 = invalid, __ = unaddressable byte
        Example: get_vbits 0x........ 10
  make_memory [noaccess|undefined
                     |defined|Definedifaddressable] <addr> [<len>]
        mark <len> (or 1) bytes at <addr> with the given accessibility
  check_memory [addressable|defined] <addr> [<len>]
        check that <len> (or 1) bytes at <addr> have the given accessibility
            and outputs a description of <addr>
  leak_check [full*|summary]
                [kinds kind1,kind2,...|reachable|possibleleak*|definiteleak]
                [heuristics heur1,heur2,...]
                [increased*|changed|any]
                [unlimited*|limited <max_loss_records_output>]
            * = defaults
       where kind is one of:
         definite indirect possible reachable all none
       where heur is one of:
         stdstring length64 newarray multipleinheritance all none*
       Examples: leak_check
                 leak_check summary any
                 leak_check full kinds indirect,possible
                 leak_check full reachable any limited 100
  block_list <loss_record_nr>
        after a leak search, shows the list of blocks of <loss_record_nr>
  who_points_at <addr> [<len>]
        shows places pointing inside <len> (default 1) bytes at <addr>
        (with len 1, only shows "start pointers" pointing exactly to <addr>,
         with len > 1, will also show "interior pointers")
monitor command request to kill this process
