2010-10-28 16 views
7

Soy bastante nuevo en Eclipse. Intentando configurar la depuración remota.¿Cómo configurar Eclipse para la depuración de C remota con gdbserver?

Aquí está la situación, me estoy conectando a una máquina remota que ejecuta Linux, estoy ejecutando Windows.

1) He instalado toda la herramienta necesaria para Eclipse, y pude conectarme a la máquina Linux.

2) de la máquina remota tiene gdbserver

linux1[1]% gdbserver 
Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...] 
     gdbserver [OPTIONS] --attach COMM PID 
     gdbserver [OPTIONS] --multi COMM 

COMM may either be a tty device (for serial debugging), or 
HOST:PORT to listen for a TCP connection. 

Options: 
    --debug    Enable debugging output. 

¿Es necesario configurar nada en gdbserver ???

3) ¿Qué más debo configurar en Eclipse? para la depuración remota?

4) ¿Importa que mi versión de GDB sea diferente de la Máquina remota GDB?

+0

¿Nadie ???????? – newprint

+0

Posible duplicado de [Depuración remota de aplicaciones C++ con Eclipse CDT/RSE/RDT] (https://stackoverflow.com/questions/15685104/remote-debugging-c-applications-with-eclipse-cdt-rse-rdt) –

Respuesta

5

gdbserver necesita más argumentos. Por ejemplo, diga gdbserver localhost:1337 yourprogram yourprogramarguments y manténgalo funcionando.

Luego, en Eclipse, cree una nueva configuración de depuración para una "Aplicación C/C++". En la pestaña principal, en la parte inferior, elija GDB (GSF) Remote System Process Launcher como iniciador. En la pestaña del depurador, elija gdbserver Debugger como el depurador. En conexión, digamos TCP como tipo de conexión y proporcione localhost:1337 como dirección. Cuando inicie la configuración, puede controlar el control remoto gdb al ingresar comandos en la consola.

2

cheque CLI cordura

Antes de hacer nada, asegúrese de que:

Esta respuesta supone que usted puede hacer en la tarjeta de desarrollo:

sudo apt-get install gdbserver 
gdbserver :1234 path/to/executable 

Y en el host:

aarch64-linux-gnu-gdb \ 
    -ex "target remote board-hostname:1234" \ 
    -ex "file path/to/cross/compiled/executable" \ 
    -ex 'tb main' \ 
    -ex c 

y luego paso depurar todo correctamente.

configuración Eclipse

Probado en Ubuntu 16.04 anfitrión, Eclipse 4.7.0 Oxígeno (descargado del sitio), 7,12 gdbserver, aarch64-linux-gnu-gdb 7.6.

he utilizado con éxito todos los métodos siguientes:

  • manual de
  • automática
    • contraseña de autenticación
    • clave pública de autenticación

Manual

Con este método, debemos ejecutar gdbserver en el destino antes de ejecutar la depuración en Eclipse.

Pro: dispensa la configuración de conexiones SSH a través de Eclipse para permitir que Eclipse ejecute gdbserver, que es otro posible punto de falla.

contra: hay que relanzar gdbserver cada vez que se inicia la depuración. Esto podría ser superado si Eclipse entendió gdbserver --multi, pero no creo que sí?

Debido a su simplicidad, recomiendo que se obtiene de este método de trabajo en primer lugar.

Abrir las configuraciones de depuración, a continuación, crear un nuevo "C/C++ de aplicaciones remotas".

En la pestaña "Principal":

  • seleccione el "Proyecto" "Nombre" y "C/Aplicación C++" como de costumbre para una depuración local de

  • en el lanzador inferior, haga clic en "Seleccionar otro", marque "Usar configuraciones específicas de configuración" y elija "GDB (DSF) Manual Remoto Depurador de depuración"

    Por qué hacemos esto: el iniciador automático primero se conecta al tablero con SSH y lanza el gdbserver para usted .

    enter image description here

En la pestaña "depurador":

  • "BGF depurador": lo mismo que se utiliza desde la CLI en el host, aarch64-linux-gnu-gdb para este ejemplo

  • Sub- pestaña "Conexión": configure el nombre de host y el puerto como se pasaron al host en la CLI (board-hostname y 1234)

    enter image description here

    enter image description here

Por último, poner en marcha manualmente gdbserver en el objetivo tal como lo hicimos desde la CLI:

gdbserver :1234 path/to/executable 

e iniciar el depurador de Eclipse normalmente.

Debe reiniciar gdbserver cada vez que finaliza el programa.

automática con la contraseña de autenticación

Este es el mejor método para tarjetas de desarrollo, que han fijado las contraseñas conocidas públicamente.

Se conecta al objetivo con SSH y una contraseña, y ejecuta gdbserver en el destino automáticamente cada vez, ¡lo cual es muy conveniente!

Objetivo gdbserver stdout va a la ventana "Consola" de Eclipse, lo que reduce aún más el cambio de ventana.

En Eclipse Set:

automática con clave pública

Muy similar a la autenticación de contraseña, excepto que debe ir a: "Conexión", "Nuevo", y seleccione "autenticación basada en clave pública"

Pros:

  • vence al "almacenamiento seguro no pudo guardar la contraseña maestra" si tiene una clave privada sin cifrar (no seguro, pero está bien para devboards)
  • para los servidores, es probable que ya ha configurado los públicos clave

Contras:

  • clave de configuración puede doler la primera vez
  • debe rehacer clave de configuración cada vez que devboard es bombardeado

por lo Preferiría este método para servidores.

SSH puede conectarse sin una contraseña si:

Antes de utilizar este método, asegúrese de que su Autorizar llaves d trabajar desde la línea de comandos, es decir, ahora debería ser capaz de hacer:

ssh [email protected] 

sin necesidad de introducir ninguna contraseña.

Cuestiones relacionadas