19.1. Connecting to a remote target
On the gdb host machine, you will need an unstripped copy of
your program, since gdb needs symobl and debugging information.
Start up gdb as usual, using the name of the local copy of your
program as the first argument.
If you're using a serial line, you may want to give gdb the
-baud option, or use the set remotebaud command
before the target command.
After that, use target remote to establish communications with
the target machine. Its argument specifies how to communicate--either
via a devicename attached to a direct serial line, or a TCP or UDP port
(possibly to a terminal server which in turn has a serial line to the
target). For example, to use a serial line connected to the device
named /dev/ttyb:
To use a TCP connection, use an argument of the form
host:port or tcp:host:port.
For example, to connect to port 2828 on a
terminal server named manyfarms:
target remote manyfarms:2828 |
If your remote target is actually running on the same machine as
your debugger session (e.g. a simulator of your target running on
the same host), you can omit the hostname. For example, to connect
to port 1234 on your local machine:
Note that the colon is still required here.
To use a UDP connection, use an argument of the form
udp:host:port. For example, to connect to UDP port 2828
on a terminal server named manyfarms:
target remote udp:manyfarms:2828 |
When using a UDP connection for remote debugging, you should keep in mind
that the `U' stands for "Unreliable". UDP can silently drop packets on
busy or unreliable networks, which will cause havoc with your debugging
session.
Now you can use all the usual commands to examine and change data and to
step and continue the remote program.
Whenever gdb is waiting for the remote program, if you type the
interrupt character (often [C-C]), gdb attempts to stop the
program. This may or may not succeed, depending in part on the hardware
and the serial drivers the remote system uses. If you type the
interrupt character once again, gdb displays this prompt:
Interrupted while waiting for the program.
Give up (and stop debugging it)? (y or n) |
If you type y, gdb abandons the remote debugging session.
(If you decide you want to try again later, you can use target
remote again to connect once more.) If you type n, gdb
goes back to waiting.
- detach
When you have finished debugging the remote program, you can use the
detach command to release it from gdb control.
Detaching from the target normally resumes its execution, but the results
will depend on your particular remote stub. After the detach
command, gdb is free to connect to another target.
- disconnect
The disconnect command behaves like detach, except that
the target is generally not resumed. It will wait for gdb
(this instance or another one) to connect and continue debugging. After
the disconnect command, gdb is again free to connect to
another target.