gdbserver es un programa informático que permite depurar remotamente otros programas. [1] Al ejecutarse en el mismo sistema que el programa que se va a depurar, permite que GNU Debugger se conecte desde otro sistema; es decir, sólo el ejecutable que se va a depurar necesita residir en el sistema de destino ("target"), mientras que el código fuente y una copia del archivo binario que se va a depurar residen en la computadora local del desarrollador ("host"). La conexión puede ser TCP o una línea serial.
gdbserver
se lanza en el sistema de destino, con los argumentos:gdb
se ejecuta en el host, con los argumentos:Ejemplo de depuración de un programa llamado hello_world
en un destino remoto mediante TCP ("2159" es el número de puerto TCP registrado para GDB remoto ):
remoto@~$ gdbserver :2159 hello_world Proceso hello_world creado; pid = 2509 Escuchando en el puerto 2159
local@~$ gdb -q hello_world Leyendo símbolos de /home/user/hello_world...hecho. (gdb) target remote 192.168.0.11:2159 Depuración remota usando 192.168.0.11:2159 0x002f3850 en ?? () desde /lib/ld-linux.so.2 (gdb) continue Continuando.El programa recibió la señal SIGSEGV, Fallo de segmentación. 0x08048414 en main() en hello_world.c:10 10 printf("x[%d] = %g\n", i, x[i]); (gdb)
Otra técnica para depurar programas de forma remota es utilizar un stub remoto . [2] [ aclaración necesaria ] En este caso, el programa que se va a depurar se vincula con algunas subrutinas de propósito especial que implementan el protocolo serial remoto GDB. El archivo que contiene estas subrutinas se denomina "stub de depuración".