Gdbserver

{{Short description|Remote debugging program}}

{{lowercase|title=gdbserver}}

gdbserver is a computer program that makes it possible to remotely debug other programs.[http://ftp.gnu.org/old-gnu/Manuals/gdb-5.1.1/html_node/gdb_130.html GDB Manual] Running on the same system as the program to be debugged, it allows the GNU Debugger to connect from another system; that is, only the executable to be debugged needs to be resident on the target system ("target"), while the source code and a copy of the binary file to be debugged reside on the developer's local computer ("host"). The connection can be either TCP or a serial line.

How it works

  1. gdbserver is launched on the target system, with the arguments:
  2. * Either a device name (to use a serial line) or a TCP hostname and port number, and
  3. * The path and filename of the executable to be debugged
  4. :It then waits passively for the host gdb to communicate with it.
  5. gdb is run on the host, with the arguments:
  6. * The path and filename of the executable (and any sources) on the host, and
  7. * A device name (for a serial line) or the IP address and port number needed for connection to the target system.

Example for debugging a program called hello_world on a remote target using TCP ("2159" is the registered TCP port number for remote GDB):

remote@~$ gdbserver :2159 hello_world

Process hello_world created; pid = 2509

Listening on port 2159

local@~$ gdb -q hello_world

Reading symbols from /home/user/hello_world...done.

(gdb) target remote 192.168.0.11:2159

Remote debugging using 192.168.0.11:2159

0x002f3850 in ?? () from /lib/ld-linux.so.2

(gdb) continue

Continuing.

Program received signal SIGSEGV, Segmentation fault.

0x08048414 in main () at hello_world.c:10

10 printf("x[%d] = %g\n", i, x[i]);

(gdb)

Alternatives

Another technique for debugging programs remotely is to use a remote stub.[https://sourceware.org/gdb/onlinedocs/gdb/Remote-Stub.html#SEC140 Debugging with GDB]{{Clarify|date=February 2010}} In this case, the program to be debugged is linked with a few special-purpose subroutines that implement the GDB remote serial protocol. The file containing these subroutines is called a "debugging stub".

See also

Notes

{{Reflist}}

References

  • Andreas Zeller: Why Programs Fail: A Guide to Systematic Debugging, Morgan Kaufmann, 2005. {{ISBN|1-55860-866-4}}