GNU/Linux >> Tutoriales Linux >  >> Linux

Depuración remota de un proceso de Linux desde Windows con gdb y gdbserver:¿qué se necesita exactamente en el lado de Windows?

Simplemente reconstruya gdb con el soporte de la plataforma de destino. Puede usar Cygwin para esto. Ejemplo para la plataforma de destino RHEL:

> wget http://ftp.gnu.org/gnu/gdb/gdb-<ver>.tar.xz
> tar -xJvf gdb-<ver>.tar.xz
> mkdir -p gdb-<ver>/build/x86_64-redhat-linux-gnu
> cd gdb-<ver>/build/x86_64-redhat-linux-gnu
> ../../configure --target=x86_64-redhat-linux-gnu
> make && make install
> x86_64-redhat-linux-gnu-gdb.exe --version

No olvide volver a configurar su cadena de herramientas después de esto. Para obtener el nombre de la configuración de destino, puede usar:

> echo ${BASH_VERSINFO[5]}

Ahora hay un complementohttp://marketplace.eclipse.org/content/direct-remote-c-debugging

Lo que le permite iniciar gdb en el servidor de forma remota a través de ssh. Se ocupa del mapeo de rutas y otras cosas.

No necesita que el servidor gdb se ejecute de forma remota


No pude compilar en Windows, pero me resultó bastante fácil compilarlo en Linux. Para resumir y completar la respuesta de @Eugene:Primero, prepare las fuentes:

wget http://ftp.gnu.org/gnu/gdb/gdb-<ver>.tar.xz
tar -xJvf gdb-<ver>.tar.xz
mkdir -p gdb-<ver>/build/x86_64-redhat-linux-gnu
cd gdb-<ver>/build/x86_64-redhat-linux-gnu

Descargar compilador de Windows:

sudo apt-get install mingw-w64

Consulte la plataforma de configuración de destino en la que desea depurar sus archivos binarios (qué poner en el parámetro --target):

echo ${BASH_VERSINFO[5]}

Prepare makefiles dirigidos a su plataforma deseada pero ejecutándose en un host diferente. Lo compilamos estático para que no dependa de ninguna DLL u otras bibliotecas. También deshabilitamos la construcción de otros binarios como sugiere gdb wiki:

../../configure --host=x86_64-w64-mingw32 --target=x86_64-pc-linux-gnu --enable-static=yes --disable-interprocess-agent --disable-binutils --disable-ld --disable-gold --disable-gas --disable-sim --disable-gprof

finalmente, construya (toma como 30-60 min):

make LDFLAGS=-static

Puede encontrar su depurador en la carpeta gdb. También es bueno quitarle los símbolos de depuración ya que después de construir el ejecutable es enorme:

strip -s gdb/gdb.exe

¡Voila! ¡gdb.exe listo para ejecutarse en Windows y depurar ejecutables de Linux de forma remota!


Linux
  1. Ver comandos y tareas con el comando watch de Linux

  2. ¿Cómo depurar el kernel de Linux con GDB y QEMU?

  3. ¿Cuáles son las llamadas al sistema operativo/sistema nativo de Windows y Linux realizadas desde malloc()?

  4. ¿Cuál es la definición de una sesión en Linux?

  5. ¿Cuál es el equivalente Linux del inicio de Windows?

Configurar un espacio de trabajo de Linux de forma remota desde la línea de comandos

Monitoreo de hosts Linux y Windows con Glances

¿Cuál es la diferencia entre Linux y Unix?

Escritura y depuración de aplicaciones C++ de Linux desde Visual Studio mediante el subsistema de Windows para Linux

¿Cuáles son las diferencias entre los archivos .txt de Linux y Windows (codificación Unicode)?

¿Cuál es el equivalente de ~ (tilde) de Linux en Windows?