2010-10-28 14 views
7

Sono abbastanza nuovo per Eclipse. Cercando di impostare per eseguire il debug remoto.Come impostare Eclipse per il debug C remoto con gdbserver?

Ecco la situazione, mi collego al computer remoto che esegue Linux, sto eseguendo Windows.

1) Ho installato tutti gli strumenti necessari per Eclipse ed è stato in grado di connettermi alla macchina Linux.

2) La macchina remota ha 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. 

ho bisogno di configurare nulla in gdbserver ???

3) Che altro dovrei configurare in Eclipse? per il debug remoto?

4) È importante che la mia versione GDB sia diversa da Remote Machine GDB?

+0

Nessuno ???????? – newprint

+0

Possibile duplicato di [Debug remoto applicazioni C++ con Eclipse CDT/RSE/RDT] (https://stackoverflow.com/questions/15685104/remote-debugging-c-applications-with-eclipse-cdt-rse-rdt) –

risposta

5

gdbserver ha bisogno di più argomenti. Ad esempio, dire gdbserver localhost:1337 yourprogram yourprogramarguments e tenerlo in esecuzione.

Quindi, in Eclipse, creare una nuova configurazione di debug per una "Applicazione C/C++". Nella scheda principale, in basso, scegli GDB (GSF) Remote System Process Launcher come programma di avvio. Nella scheda debugger, selezionare gdbserver Debugger come debugger. Sotto connessione, dire TCP come tipo di connessione e dare localhost:1337 come indirizzo. Quando si avvia la configurazione, è possibile controllare il telecomando gdb immettendo i comandi nella console.

2

controllo CLI sanity

Prima di fare qualsiasi cosa, assicuratevi di:

Questa risposta presuppone che si può fare sulla scheda di sviluppo:

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

E sull'host:

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

e poi passo il debug tutto correttamente.

configurazione Eclipse

Testato in Ubuntu 16.04 ospite, Eclipse 4.7.0 Ossigeno (scaricato dal sito web), gdbserver 7.12, aarch64-linux-gnu-gdb 7.6.

Ho usato con successo tutti i seguenti metodi:

  • manuale
  • automatica
    • Password Aut
    • chiave pubblica autenticazione

Manuale

Con questo metodo, è necessario avviare gdbserver sulla destinazione prima di eseguire il debug su Eclipse.

Pro: dispense che configurano le connessioni SSH tramite Eclipse per consentire a Eclipse di eseguire gdbserver, che è un altro possibile punto di errore.

Con: è necessario riavviare gdbserver ogni volta che si avvia il debug. Questo potrebbe essere superato se Eclipse ha capito gdbserver --multi, ma non credo che lo faccia?

Per la sua semplicità, ti consiglio di far funzionare questo metodo prima.

Aprire le configurazioni di debug, quindi creare una nuova "Applicazione remota C/C++".

Nella scheda "Principale":

  • selezionare il "Progetto" "Nome" e "C/C++ applicazione" come al solito per un debug locale

  • al lanciatore fondo, fare clic su "Seleziona altro", selezionare "Usa impostazioni specifiche di configurazione" e selezionare "GDB (DSF) Manual Remote Launcher di debug"

    Perché facciamo questo: il lanciatore automatico si collega prima alla scheda con SSH e lancia il gdbserver per te .

    enter image description here

Nella scheda "Debugger":

  • "GDB debugger": stesso utilizzato da CLI sull'host, aarch64-linux-gnu-gdb per questo esempio

  • Sub scheda "Connessione": imposta il nome host e la porta trasmessi all'host sulla CLI (board-hostname e 1234)

    enter image description here

    enter image description here

Infine, avviare manualmente gdbserver sul bersaglio proprio come abbiamo fatto dalla CLI:

gdbserver :1234 path/to/executable 

e avviare il debugger da Eclipse normalmente.

È necessario riavviare gdbserver ogni volta che si termina il programma.

automatico con password di autenticazione

Questo è il metodo migliore per schede di sviluppo, che hanno fissato le password noti pubblicamente.

Si collega all'obiettivo con SSH e una password e lancia automaticamente gdbserver sulla destinazione, il che è super conveniente!

Obiettivo gdbserver stdout passa alla finestra "Console" di Eclipse, che riduce ulteriormente il cambio di finestra.

In Eclipse set:

automatica con chiave pubblica

Molto simile alla autenticazione della password, se non che si deve andare a: "Connessione", "Nuovo", e scegliere "l'autenticazione basata su chiave pubblica"

Pro:

  • vince il "archiviazione sicura è riuscito a salvare la master password" se si dispone di una chiave privata in chiaro (non sicuro, ma va bene per devboards)
  • per i server, probabilmente hai già impostato i pubblici chiave

Contro:

  • configurazione chiave può ferire la prima volta
  • deve rifare l'installazione chiave ogni volta devboard è nuked

così Preferirei questo metodo per i server.

SSH in grado di connettersi senza password se:

Prima di utilizzare questo metodo, assicurarsi che l'utente autorizzi d tasti funzionano dalla riga di comando, vale a dire si dovrebbe ora essere in grado di fare:

ssh [email protected] 

senza digitare alcuna password.

Problemi correlati