mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 16:36:21 +00:00
209 lines
6.7 KiB
Groff
209 lines
6.7 KiB
Groff
'\" t
|
|
.\" Title: vgdb
|
|
.\" Author: [see the "Author" section]
|
|
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
|
|
.\" Date: 09/23/2015
|
|
.\" Manual: Release 3.11.0
|
|
.\" Source: Release 3.11.0
|
|
.\" Language: English
|
|
.\"
|
|
.TH "VGDB" "1" "09/23/2015" "Release 3.11.0" "Release 3.11.0"
|
|
.\" -----------------------------------------------------------------
|
|
.\" * 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=<number>\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=<number>\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=<number>\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=<number>\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=<portnr>\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 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\-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
|