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 .
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
)
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.
Nessuno ???????? – newprint
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) –