Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
VGDB(1) 			      vgdb				 VGDB(1)

NAME
     vgdb - intermediary between Valgrind and GDB or a shell

SYNOPSIS
     vgdb [options]

DESCRIPTION
     vgdb  ("Valgrind  to  GDB") is used as an intermediary between Valgrind and
     GDB or a shell. It has three usage modes:

      1. As a standalone utility, it is used from a shell command line	to  send
	 monitor  commands  to a process running under Valgrind. For this usage,
	 the vgdb OPTION(s) must be followed by the monitor command to send.  To
	 send more than one command, separate them with the -c option.

       2. In  combination  with GDB "target remote |" command, it is used as the
	 relay application between GDB and the Valgrind gdbserver. For this  us-
	 age, only OPTION(s) can be given, but no COMMAND can be given.

      3. In the --multi mode, vgdb uses the extended remote protocol to communi-
	 cate  with  GDB.  This allows you to view output from both valgrind and
	 GDB in the GDB session.  This	is  accomplished  via  the  "target  ex-
	 tended-remote | vgdb --multi". In this mode you no longer need to start
	 valgrind yourself. vgdb will start up valgrind when gdb tells it to run
	 a  new  program.  For	this usage, the vgdb OPTIONS(s) can also include
	 --valgrind and --vargs to describe how valgrind should be started.

OPTIONS
     --pid=<number>
	 Specifies the PID of the process to which vgdb must  connect  to.  This
	 option  is  useful in case more than one Valgrind gdbserver can be con-
	 nected to. If the --pid argument is not  given  and  multiple	Valgrind
	 gdbserver  processes  are  running,  vgdb  will report the list of such
	 processes and then exit.

     --vgdb-prefix
	 Must be given to both Valgrind and vgdb if you want to change	the  de-
	 fault prefix for the FIFOs (named pipes) used for communication between
	 the Valgrind gdbserver and vgdb.

     --wait=<number>
	 Instructs  vgdb  to  search  for  available Valgrind gdbservers for the
	 specified number of seconds.  This  makes  it	possible  start  a  vgdb
	 process  before  starting  the Valgrind gdbserver with which you intend
	 the vgdb to communicate. This option is useful when used in conjunction
	 with a --vgdb-prefix that is unique to the process  you  want	to  wait
	 for.  Also,  if  you use the --wait argument in the GDB "target remote"
	 command, you must set the GDB remotetimeout to a value bigger than  the
	 --wait  argument  value. See option --max-invoke-ms (just below) for an
	 example of setting the remotetimeout value.

     --max-invoke-ms=<number>
	 Gives the number of milliseconds after which vgdb will force the  invo-
	 cation of gdbserver embedded in Valgrind. The default value is 100 mil-
	 liseconds.  A value of 0 disables forced invocation. The forced invoca-
	 tion is used when vgdb is connected to a Valgrind  gdbserver,	and  the
	 Valgrind process has all its threads blocked in a system call.

	 If  you  specify a large value, you might need to increase the GDB "re-
	 motetimeout" value from its default value of 2 seconds. You should  en-
	 sure  that  the timeout (in seconds) is bigger than the --max-invoke-ms
	 value. For example, for --max-invoke-ms=5000, the following GDB command
	 is suitable:

		 (gdb) set remotetimeout 6

     --cmd-time-out=<number>
	 Instructs a standalone vgdb to exit if the  Valgrind  gdbserver  it  is
	 connected to does not process a command in the specified number of sec-
	 onds. The default value is to never time out.

     --port=<portnr>
	 Instructs  vgdb  to use tcp/ip and listen for GDB on the specified port
	 nr rather than to use a pipe to communicate with GDB. Using tcp/ip  al-
	 lows  to  have  GDB  running  on  one computer and debugging a Valgrind
	 process running on another target computer. Example:

	     # On the target computer, start your program under valgrind using
	     valgrind --vgdb-error=0 prog
	     # and then in another shell, run:
	     vgdb --port=1234

	 On the computer which hosts GDB, execute the command:

	     gdb prog
	     (gdb) target remote targetip:1234

	 where targetip is the ip address or hostname of the target computer.

     --vgdb-multi
	 Makes vgdb start in extended-remote mode and to wait for gdb to tell us
	 what to run.

     --valgrind
	 The path to valgrind to use, in extended-remote mode. If not specified,
	 the system valgrind will be launched.

     --vargs
	 Options to run valgrind with, in extended-remote mode. For example  -q.
	 Everything  following --vargs will be provided as arguments to valgrind
	 as is.

     -c
	 To give more than one command to a standalone vgdb, separate  the  com-
	 mands by an option -c. Example:

	     vgdb v.set log_output -c leak_check any

     -l
	 Instructs  a  standalone  vgdb  to report the list of the Valgrind gdb-
	 server processes running and then exit.

     -T
	 Instructs vgdb to add timestamps to vgdb information messages.

     -D
	 Instructs a standalone vgdb to show the state of the shared memory used
	 by the Valgrind gdbserver. vgdb will exit after having shown  the  Val-
	 grind gdbserver shared memory state.

     -d
	 Instructs  vgdb  to  produce debugging output. Give multiple -d args to
	 increase the verbosity. When giving -d to  a  relay  vgdb,  you  better
	 redirect  the standard error (stderr) of vgdb to a file to avoid inter-
	 action between GDB and vgdb debugging output.

SEE ALSO
     valgrind(1), $INSTALL/share/doc/valgrind/html/index.html or http://www.val-
     grind.org/docs/manual/index.html,

     Debugging your program using Valgrind's gdbserver and GDB[1] vgdb[2],  Val-
     grind monitor commands[3].

AUTHOR
     Philippe Waroquiers.

NOTES
      1. Debugging your program using Valgrind's gdbserver and GDB
	 http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver

      2. vgdb
	 http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.vgdb

      3. Valgrind monitor commands
	 http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.valgrind-monitor-commands

Release 3.26.0.GIT		   08/01/2026				 VGDB(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vgdb&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help