| .\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) |
| .\" |
| .\" Standard preamble: |
| .\" ======================================================================== |
| .de Sp \" Vertical space (when we can't use .PP) |
| .if t .sp .5v |
| .if n .sp |
| .. |
| .de Vb \" Begin verbatim text |
| .ft CW |
| .nf |
| .ne \\$1 |
| .. |
| .de Ve \" End verbatim text |
| .ft R |
| .fi |
| .. |
| .\" Set up some character translations and predefined strings. \*(-- will |
| .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left |
| .\" double quote, and \*(R" will give a right double quote. \*(C+ will |
| .\" give a nicer C++. Capital omega is used to do unbreakable dashes and |
| .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, |
| .\" nothing in troff, for use with C<>. |
| .tr \(*W- |
| .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' |
| .ie n \{\ |
| . ds -- \(*W- |
| . ds PI pi |
| . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch |
| . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch |
| . ds L" "" |
| . ds R" "" |
| . ds C` "" |
| . ds C' "" |
| 'br\} |
| .el\{\ |
| . ds -- \|\(em\| |
| . ds PI \(*p |
| . ds L" `` |
| . ds R" '' |
| . ds C` |
| . ds C' |
| 'br\} |
| .\" |
| .\" Escape single quotes in literal strings from groff's Unicode transform. |
| .ie \n(.g .ds Aq \(aq |
| .el .ds Aq ' |
| .\" |
| .\" If the F register is turned on, we'll generate index entries on stderr for |
| .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index |
| .\" entries marked with X<> in POD. Of course, you'll have to process the |
| .\" output yourself in some meaningful fashion. |
| .\" |
| .\" Avoid warning from groff about undefined register 'F'. |
| .de IX |
| .. |
| .nr rF 0 |
| .if \n(.g .if rF .nr rF 1 |
| .if (\n(rF:(\n(.g==0)) \{ |
| . if \nF \{ |
| . de IX |
| . tm Index:\\$1\t\\n%\t"\\$2" |
| .. |
| . if !\nF==2 \{ |
| . nr % 0 |
| . nr F 2 |
| . \} |
| . \} |
| .\} |
| .rr rF |
| .\" |
| .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). |
| .\" Fear. Run. Save yourself. No user-serviceable parts. |
| . \" fudge factors for nroff and troff |
| .if n \{\ |
| . ds #H 0 |
| . ds #V .8m |
| . ds #F .3m |
| . ds #[ \f1 |
| . ds #] \fP |
| .\} |
| .if t \{\ |
| . ds #H ((1u-(\\\\n(.fu%2u))*.13m) |
| . ds #V .6m |
| . ds #F 0 |
| . ds #[ \& |
| . ds #] \& |
| .\} |
| . \" simple accents for nroff and troff |
| .if n \{\ |
| . ds ' \& |
| . ds ` \& |
| . ds ^ \& |
| . ds , \& |
| . ds ~ ~ |
| . ds / |
| .\} |
| .if t \{\ |
| . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" |
| . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' |
| . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' |
| . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' |
| . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' |
| . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' |
| .\} |
| . \" troff and (daisy-wheel) nroff accents |
| .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' |
| .ds 8 \h'\*(#H'\(*b\h'-\*(#H' |
| .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] |
| .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' |
| .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' |
| .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] |
| .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] |
| .ds ae a\h'-(\w'a'u*4/10)'e |
| .ds Ae A\h'-(\w'A'u*4/10)'E |
| . \" corrections for vroff |
| .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' |
| .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' |
| . \" for low resolution devices (crt and lpr) |
| .if \n(.H>23 .if \n(.V>19 \ |
| \{\ |
| . ds : e |
| . ds 8 ss |
| . ds o a |
| . ds d- d\h'-1'\(ga |
| . ds D- D\h'-1'\(hy |
| . ds th \o'bp' |
| . ds Th \o'LP' |
| . ds ae ae |
| . ds Ae AE |
| .\} |
| .rm #[ #] #H #V #F C |
| .\" ======================================================================== |
| .\" |
| .IX Title "GDBSERVER 1" |
| .TH GDBSERVER 1 "2015-02-06" "gdb-7.8.1" "GNU Development Tools" |
| .\" For nroff, turn off justification. Always turn off hyphenation; it makes |
| .\" way too many mistakes in technical documents. |
| .if n .ad l |
| .nh |
| .SH "NAME" |
| gdbserver \- Remote Server for the GNU Debugger |
| .SH "SYNOPSIS" |
| .IX Header "SYNOPSIS" |
| gdbserver \fIcomm\fR \fIprog\fR [\fIargs\fR...] |
| .PP |
| gdbserver \-\-attach \fIcomm\fR \fIpid\fR |
| .PP |
| gdbserver \-\-multi \fIcomm\fR |
| .SH "DESCRIPTION" |
| .IX Header "DESCRIPTION" |
| \&\fBgdbserver\fR is a program that allows you to run \s-1GDB\s0 on a different machine |
| than the one which is running the program being debugged. |
| .PP |
| Usage (server (target) side): |
| .PP |
| First, you need to have a copy of the program you want to debug put onto |
| the target system. The program can be stripped to save space if needed, as |
| \&\fBgdbserver\fR doesn't care about symbols. All symbol handling is taken care of by |
| the \s-1GDB\s0 running on the host system. |
| .PP |
| To use the server, you log on to the target system, and run the \fBgdbserver\fR |
| program. You must tell it (a) how to communicate with \s-1GDB, \s0(b) the name of |
| your program, and (c) its arguments. The general syntax is: |
| .PP |
| .Vb 1 |
| \& target> gdbserver <comm> <program> [<args> ...] |
| .Ve |
| .PP |
| For example, using a serial port, you might say: |
| .PP |
| .Vb 1 |
| \& target> gdbserver /dev/com1 emacs foo.txt |
| .Ve |
| .PP |
| This tells \fBgdbserver\fR to debug emacs with an argument of foo.txt, and |
| to communicate with \s-1GDB\s0 via \fI/dev/com1\fR. \fBgdbserver\fR now |
| waits patiently for the host \s-1GDB\s0 to communicate with it. |
| .PP |
| To use a \s-1TCP\s0 connection, you could say: |
| .PP |
| .Vb 1 |
| \& target> gdbserver host:2345 emacs foo.txt |
| .Ve |
| .PP |
| This says pretty much the same thing as the last example, except that we are |
| going to communicate with the \f(CW\*(C`host\*(C'\fR \s-1GDB\s0 via \s-1TCP. \s0 The \f(CW\*(C`host:2345\*(C'\fR argument means |
| that we are expecting to see a \s-1TCP\s0 connection from \f(CW\*(C`host\*(C'\fR to local \s-1TCP\s0 port |
| 2345. (Currently, the \f(CW\*(C`host\*(C'\fR part is ignored.) You can choose any number you |
| want for the port number as long as it does not conflict with any existing \s-1TCP\s0 |
| ports on the target system. This same port number must be used in the host |
| GDBs \f(CW\*(C`target remote\*(C'\fR command, which will be described shortly. Note that if |
| you chose a port number that conflicts with another service, \fBgdbserver\fR will |
| print an error message and exit. |
| .PP |
| \&\fBgdbserver\fR can also attach to running programs. |
| This is accomplished via the \fB\-\-attach\fR argument. The syntax is: |
| .PP |
| .Vb 1 |
| \& target> gdbserver \-\-attach <comm> <pid> |
| .Ve |
| .PP |
| \&\fIpid\fR is the process \s-1ID\s0 of a currently running process. It isn't |
| necessary to point \fBgdbserver\fR at a binary for the running process. |
| .PP |
| To start \f(CW\*(C`gdbserver\*(C'\fR without supplying an initial command to run |
| or process \s-1ID\s0 to attach, use the \fB\-\-multi\fR command line option. |
| In such case you should connect using \f(CW\*(C`target extended\-remote\*(C'\fR to start |
| the program you want to debug. |
| .PP |
| .Vb 1 |
| \& target> gdbserver \-\-multi <comm> |
| .Ve |
| .PP |
| Usage (host side): |
| .PP |
| You need an unstripped copy of the target program on your host system, since |
| \&\s-1GDB\s0 needs to examine it's symbol tables and such. Start up \s-1GDB\s0 as you normally |
| would, with the target program as the first argument. (You may need to use the |
| \&\fB\-\-baud\fR option if the serial line is running at anything except 9600 baud.) |
| That is \f(CW\*(C`gdb TARGET\-PROG\*(C'\fR, or \f(CW\*(C`gdb \-\-baud BAUD TARGET\-PROG\*(C'\fR. After that, the only |
| new command you need to know about is \f(CW\*(C`target remote\*(C'\fR |
| (or \f(CW\*(C`target extended\-remote\*(C'\fR). Its argument is either |
| a device name (usually a serial device, like \fI/dev/ttyb\fR), or a \f(CW\*(C`HOST:PORT\*(C'\fR |
| descriptor. For example: |
| .PP |
| .Vb 1 |
| \& (gdb) target remote /dev/ttyb |
| .Ve |
| .PP |
| communicates with the server via serial line \fI/dev/ttyb\fR, and: |
| .PP |
| .Vb 1 |
| \& (gdb) target remote the\-target:2345 |
| .Ve |
| .PP |
| communicates via a \s-1TCP\s0 connection to port 2345 on host `the\-target', where |
| you previously started up \fBgdbserver\fR with the same port number. Note that for |
| \&\s-1TCP\s0 connections, you must start up \fBgdbserver\fR prior to using the `target remote' |
| command, otherwise you may get an error that looks something like |
| `Connection refused'. |
| .PP |
| \&\fBgdbserver\fR can also debug multiple inferiors at once, |
| described in |
| the \s-1GDB\s0 manual in node \f(CW\*(C`Inferiors and Programs\*(C'\fR |
| \&\*(-- shell command \f(CW\*(C`info \-f gdb \-n \*(AqInferiors and Programs\*(Aq\*(C'\fR. |
| In such case use the \f(CW\*(C`extended\-remote\*(C'\fR \s-1GDB\s0 command variant: |
| .PP |
| .Vb 1 |
| \& (gdb) target extended\-remote the\-target:2345 |
| .Ve |
| .PP |
| The \fBgdbserver\fR option \fB\-\-multi\fR may or may not be used in such |
| case. |
| .SH "OPTIONS" |
| .IX Header "OPTIONS" |
| There are three different modes for invoking \fBgdbserver\fR: |
| .IP "\(bu" 4 |
| Debug a specific program specified by its program name: |
| .Sp |
| .Vb 1 |
| \& gdbserver <comm> <prog> [<args>...] |
| .Ve |
| .Sp |
| The \fIcomm\fR parameter specifies how should the server communicate |
| with \s-1GDB\s0; it is either a device name (to use a serial line), |
| a \s-1TCP\s0 port number (\f(CW\*(C`:1234\*(C'\fR), or \f(CW\*(C`\-\*(C'\fR or \f(CW\*(C`stdio\*(C'\fR to use |
| stdin/stdout of \f(CW\*(C`gdbserver\*(C'\fR. Specify the name of the program to |
| debug in \fIprog\fR. Any remaining arguments will be passed to the |
| program verbatim. When the program exits, \s-1GDB\s0 will close the |
| connection, and \f(CW\*(C`gdbserver\*(C'\fR will exit. |
| .IP "\(bu" 4 |
| Debug a specific program by specifying the process \s-1ID\s0 of a running |
| program: |
| .Sp |
| .Vb 1 |
| \& gdbserver \-\-attach <comm> <pid> |
| .Ve |
| .Sp |
| The \fIcomm\fR parameter is as described above. Supply the process \s-1ID\s0 |
| of a running program in \fIpid\fR; \s-1GDB\s0 will do everything |
| else. Like with the previous mode, when the process \fIpid\fR exits, |
| \&\s-1GDB\s0 will close the connection, and \f(CW\*(C`gdbserver\*(C'\fR will exit. |
| .IP "\(bu" 4 |
| Multi-process mode \*(-- debug more than one program/process: |
| .Sp |
| .Vb 1 |
| \& gdbserver \-\-multi <comm> |
| .Ve |
| .Sp |
| In this mode, \s-1GDB\s0 can instruct \fBgdbserver\fR which |
| command(s) to run. Unlike the other 2 modes, \s-1GDB\s0 will not |
| close the connection when a process being debugged exits, so you can |
| debug several processes in the same session. |
| .PP |
| In each of the modes you may specify these options: |
| .IP "\fB\-\-help\fR" 4 |
| .IX Item "--help" |
| List all options, with brief explanations. |
| .IP "\fB\-\-version\fR" 4 |
| .IX Item "--version" |
| This option causes \fBgdbserver\fR to print its version number and exit. |
| .IP "\fB\-\-attach\fR" 4 |
| .IX Item "--attach" |
| \&\fBgdbserver\fR will attach to a running program. The syntax is: |
| .Sp |
| .Vb 1 |
| \& target> gdbserver \-\-attach <comm> <pid> |
| .Ve |
| .Sp |
| \&\fIpid\fR is the process \s-1ID\s0 of a currently running process. It isn't |
| necessary to point \fBgdbserver\fR at a binary for the running process. |
| .IP "\fB\-\-multi\fR" 4 |
| .IX Item "--multi" |
| To start \f(CW\*(C`gdbserver\*(C'\fR without supplying an initial command to run |
| or process \s-1ID\s0 to attach, use this command line option. |
| Then you can connect using \f(CW\*(C`target extended\-remote\*(C'\fR and start |
| the program you want to debug. The syntax is: |
| .Sp |
| .Vb 1 |
| \& target> gdbserver \-\-multi <comm> |
| .Ve |
| .IP "\fB\-\-debug\fR" 4 |
| .IX Item "--debug" |
| Instruct \f(CW\*(C`gdbserver\*(C'\fR to display extra status information about the debugging |
| process. |
| This option is intended for \f(CW\*(C`gdbserver\*(C'\fR development and for bug reports to |
| the developers. |
| .IP "\fB\-\-remote\-debug\fR" 4 |
| .IX Item "--remote-debug" |
| Instruct \f(CW\*(C`gdbserver\*(C'\fR to display remote protocol debug output. |
| This option is intended for \f(CW\*(C`gdbserver\*(C'\fR development and for bug reports to |
| the developers. |
| .IP "\fB\-\-debug\-format=option1\fR[\fB,option2,...\fR]" 4 |
| .IX Item "--debug-format=option1[,option2,...]" |
| Instruct \f(CW\*(C`gdbserver\*(C'\fR to include extra information in each line |
| of debugging output. |
| .IP "\fB\-\-wrapper\fR" 4 |
| .IX Item "--wrapper" |
| Specify a wrapper to launch programs |
| for debugging. The option should be followed by the name of the |
| wrapper, then any command-line arguments to pass to the wrapper, then |
| \&\f(CW\*(C`\-\-\*(C'\fR indicating the end of the wrapper arguments. |
| .IP "\fB\-\-once\fR" 4 |
| .IX Item "--once" |
| By default, \fBgdbserver\fR keeps the listening \s-1TCP\s0 port open, so that |
| additional connections are possible. However, if you start \f(CW\*(C`gdbserver\*(C'\fR |
| with the \fB\-\-once\fR option, it will stop listening for any further |
| connection attempts after connecting to the first \s-1GDB\s0 session. |
| .SH "SEE ALSO" |
| .IX Header "SEE ALSO" |
| The full documentation for \s-1GDB\s0 is maintained as a Texinfo manual. |
| If the \f(CW\*(C`info\*(C'\fR and \f(CW\*(C`gdb\*(C'\fR programs and \s-1GDB\s0's Texinfo |
| documentation are properly installed at your site, the command |
| .PP |
| .Vb 1 |
| \& info gdb |
| .Ve |
| .PP |
| should give you access to the complete manual. |
| .PP |
| \&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR, |
| Richard M. Stallman and Roland H. Pesch, July 1991. |
| .SH "COPYRIGHT" |
| .IX Header "COPYRIGHT" |
| Copyright (c) 1988\-2014 Free Software Foundation, Inc. |
| .PP |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or |
| any later version published by the Free Software Foundation; with the |
| Invariant Sections being \*(L"Free Software\*(R" and \*(L"Free Software Needs |
| Free Documentation\*(R", with the Front-Cover Texts being \*(L"A \s-1GNU\s0 Manual,\*(R" |
| and with the Back-Cover Texts as in (a) below. |
| .PP |
| (a) The \s-1FSF\s0's Back-Cover Text is: \*(L"You are free to copy and modify |
| this \s-1GNU\s0 Manual. Buying copies from \s-1GNU\s0 Press supports the \s-1FSF\s0 in |
| developing \s-1GNU\s0 and promoting software freedom.\*(R" |