.\" Copyright (C) 1993, 2011-2012 Free Software Foundation, Inc.
.\" See section COPYING for conditions for redistribution
.TH gdbserver 1 "2 November 1993" "Cygnus Support" "GNU Development Tools"
.SH NAME
gdbserver \- Remote Server for the GNU Debugger
.SH SYNOPSIS
.na
.TP
.B gdbserver
.RB tty
.RB prog
.RB "[\|" args... "\|]"
.PP
.B gdbserver
.RB tty
.B --attach
.RB PID
.ad b
.SH DESCRIPTION
GDBSERVER is a program that allows you to run GDB on a different machine
than the one which is running the program being debugged.

Usage (server (target) side):

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
GDBserver doesn't care about symbols.  All symbol handling is taken care of by
the GDB running on the host system.

To use the server, you log on to the target system, and run the `gdbserver'
program.  You must tell it (a) how to communicate with GDB, (b) the name of
your program, and (c) its arguments.  The general syntax is:

	target> gdbserver COMM PROGRAM [ARGS ...]

For example, using a serial port, you might say:

	target> gdbserver /dev/com1 emacs foo.txt

This tells gdbserver to debug emacs with an argument of foo.txt, and to
communicate with GDB via /dev/com1.  Gdbserver now waits patiently for the
host GDB to communicate with it.

To use a TCP connection, you could say:

	target> gdbserver host:2345 emacs foo.txt

This says pretty much the same thing as the last example, except that we are
going to communicate with the host GDB via TCP.  The `host:2345' argument means
that we are expecting to see a TCP connection from `host' to local TCP port
2345.  (Currently, the `host' part is ignored.)  You can choose any number you
want for the port number as long as it does not conflict with any existing TCP
ports on the target system.  This same port number must be used in the host
GDBs `target remote' command, which will be described shortly.  Note that if
you chose a port number that conflicts with another service, gdbserver will
print an error message and exit.

On some targets, gdbserver can also attach to running programs.
This is accomplished via the --attach argument.  The syntax is:

	target> gdbserver COMM --attach PID

PID is the process ID of a currently running process.  It isn't
necessary to point gdbserver at a binary for the running process.

Usage (host side):

You need an unstripped copy of the target program on your host system, since
GDB needs to examine it's symbol tables and such.  Start up GDB as you normally
would, with the target program as the first argument.  (You may need to use the
--baud option if the serial line is running at anything except 9600 baud.)
Ie: `gdb TARGET-PROG', or `gdb --baud BAUD TARGET-PROG'.  After that, the only
new command you need to know about is `target remote'.  It's argument is either
a device name (usually a serial device, like `/dev/ttyb'), or a HOST:PORT
descriptor.  For example:

	(gdb) target remote /dev/ttyb

communicates with the server via serial line /dev/ttyb, and:

	(gdb) target remote the-target:2345

communicates via a TCP connection to port 2345 on host `the-target', where
you previously started up gdbserver with the same port number.  Note that for
TCP connections, you must start up gdbserver prior to using the `target remote'
command, otherwise you may get an error that looks something like
`Connection refused'.
.SH OPTIONS
You have to supply the name of the program to debug
and the tty to communicate on; the remote GDB will do everything else.
Any remaining arguments will be passed to the program verbatim.
.SH "SEE ALSO"
.RB "`\|" gdb "\|'"
entry in
.B info\c
\&;
.I 
Using GDB: A Guide to the GNU Source-Level Debugger\c
, Richard M. Stallman and Roland H. Pesch, July 1991.
.SH COPYING
Copyright (c) 1993 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
.PP
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.
