'\" t .\" Title: vgdb .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 06/28/2020 .\" Manual: vgdb .\" Source: Release 3.16.1 .\" Language: English .\" .TH "VGDB" "1" "06/28/2020" "Release 3\&.16\&.1" "vgdb" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" vgdb \- intermediary between Valgrind and GDB or a shell .SH "SYNOPSIS" .HP \w'\fBvgdb\fR\ 'u \fBvgdb\fR [\fIoptions\fR] .SH "DESCRIPTION" .PP \fBvgdb\fR ("Valgrind to GDB") is used as an intermediary between Valgrind and GDB or a shell\&. It has two usage modes: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} 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 \fB\-c\fR option\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} In combination with GDB "target remote |" command, it is used as the relay application between GDB and the Valgrind gdbserver\&. For this usage, only OPTION(s) can be given, but no COMMAND can be given\&. .RE .SH "OPTIONS" .PP \fB\-\-pid=\fR .RS 4 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 connected to\&. If the \fB\-\-pid\fR argument is not given and multiple Valgrind gdbserver processes are running, vgdb will report the list of such processes and then exit\&. .RE .PP \fB\-\-vgdb\-prefix\fR .RS 4 Must be given to both Valgrind and vgdb if you want to change the default prefix for the FIFOs (named pipes) used for communication between the Valgrind gdbserver and vgdb\&. .RE .PP \fB\-\-wait=\fR .RS 4 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 \fB\-\-vgdb\-prefix\fR that is unique to the process you want to wait for\&. Also, if you use the \fB\-\-wait\fR argument in the GDB "target remote" command, you must set the GDB remotetimeout to a value bigger than the \-\-wait argument value\&. See option \fB\-\-max\-invoke\-ms\fR (just below) for an example of setting the remotetimeout value\&. .RE .PP \fB\-\-max\-invoke\-ms=\fR .RS 4 Gives the number of milliseconds after which vgdb will force the invocation of gdbserver embedded in Valgrind\&. The default value is 100 milliseconds\&. A value of 0 disables forced invocation\&. The forced invocation is used when vgdb is connected to a Valgrind gdbserver, and the Valgrind process has all its threads blocked in a system call\&. .sp If you specify a large value, you might need to increase the GDB "remotetimeout" value from its default value of 2 seconds\&. You should ensure that the timeout (in seconds) is bigger than the \fB\-\-max\-invoke\-ms\fR value\&. For example, for \fB\-\-max\-invoke\-ms=5000\fR, the following GDB command is suitable: .sp .if n \{\ .RS 4 .\} .nf (gdb) set remotetimeout 6 .fi .if n \{\ .RE .\} .sp .RE .PP \fB\-\-cmd\-time\-out=\fR .RS 4 Instructs a standalone vgdb to exit if the Valgrind gdbserver it is connected to does not process a command in the specified number of seconds\&. The default value is to never time out\&. .RE .PP \fB\-\-port=\fR .RS 4 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 allows one to have GDB running on one computer and debugging a Valgrind process running on another target computer\&. Example: .sp .if n \{\ .RS 4 .\} .nf # On the target computer, start your program under valgrind using valgrind \-\-vgdb\-error=0 prog # and then in another shell, run: vgdb \-\-port=1234 .fi .if n \{\ .RE .\} .sp On the computer which hosts GDB, execute the command: .sp .if n \{\ .RS 4 .\} .nf gdb prog (gdb) target remote targetip:1234 .fi .if n \{\ .RE .\} .sp where targetip is the ip address or hostname of the target computer\&. .RE .PP \fB\-c\fR .RS 4 To give more than one command to a standalone vgdb, separate the commands by an option \fB\-c\fR\&. Example: .sp .if n \{\ .RS 4 .\} .nf vgdb v\&.set log_output \-c leak_check any .fi .if n \{\ .RE .\} .RE .PP \fB\-l\fR .RS 4 Instructs a standalone vgdb to report the list of the Valgrind gdbserver processes running and then exit\&. .RE .PP \fB\-T\fR .RS 4 Instructs vgdb to add timestamps to vgdb information messages\&. .RE .PP \fB\-D\fR .RS 4 Instructs a standalone vgdb to show the state of the shared memory used by the Valgrind gdbserver\&. vgdb will exit after having shown the Valgrind gdbserver shared memory state\&. .RE .PP \fB\-d\fR .RS 4 Instructs vgdb to produce debugging output\&. Give multiple \fB\-d\fR args to increase the verbosity\&. When giving \fB\-d\fR to a relay vgdb, you better redirect the standard error (stderr) of vgdb to a file to avoid interaction between GDB and vgdb debugging output\&. .RE .SH "SEE ALSO" .PP valgrind(1), $INSTALL/share/doc/valgrind/html/index\&.html or http://www\&.valgrind\&.org/docs/manual/index\&.html, \m[blue]\fBDebugging your program using Valgrind\*(Aqs gdbserver and GDB\fR\m[]\&\s-2\u[1]\d\s+2 \m[blue]\fBvgdb\fR\m[]\&\s-2\u[2]\d\s+2, \m[blue]\fBValgrind monitor commands\fR\m[]\&\s-2\u[3]\d\s+2\&. .SH "AUTHOR" .PP Philippe Waroquiers\&. .SH "NOTES" .IP " 1." 4 Debugging your program using Valgrind's gdbserver and GDB .RS 4 \%http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver .RE .IP " 2." 4 vgdb .RS 4 \%http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.vgdb .RE .IP " 3." 4 Valgrind monitor commands .RS 4 \%http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.valgrind-monitor-commands .RE