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 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 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 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.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 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
