2012-05-24 29 views
5

Ho costruito un excinable binario da puro codice C++ e richiede un errore temporale durante l'esecuzione sul dispositivo Android.come eseguire il debug del codice nativo puro su Android?

Come posso eseguire il debug del codice nativo puro per Android? Sembra che i metodi esistenti non siano per puro codice nativo.

+0

Ti consiglio di leggere http://stackoverflow.com/questions/how-to-ask e provare a chiedere di nuovo per migliorare la nostra capacità di aiutarti a ottenere una risposta. –

+0

Grazie. Ho trovato la soluzione. Pubblica qui e spera che possa aiutare gli altri a preoccuparsi di questo problema. – behe

risposta

0

Android supporta l'uso di GDB. Tuttavia, dovrei notare che se con "puro C++" intendi che non c'è affatto Java nell'applicazione, questo non è tecnicamente consentito (anche se puoi sicuramente farlo). Vedere the NDK page.

3

Fase 1: Mettere il gdbserver e la tua unstrippednativo binario eseguibile (supponiamo prende il nome testexec) sull'emulatore Android. Per esempio. puoi metterlo sotto cartella/dati/dati/test. E usa il comando chmod per aggiungere le autorizzazioni a loro.

Step2: Avvia debugger gdb. E questo passo è costituita dai seguenti sottofasi:

Passo 2.1: Inizia gdb debugger dell'emulatore con il comando digitando sul terminale macchina host:

adb shell /data/data/test/gdbserver 10.0.2.2:1234 /data/data/test/testexec 

L'emulatore sarà quindi in ascolto sulla porta 1234.

Passo 2.2: Collegare il debugger gdb della macchina locale con il gdbserver dell'emulatore:

telnet localhost 5554 

Si chiederà:

Android Console: Tipo di 'aiuto' per una lista di comandi

OK

Poi ingresso:

redir add tcp:1234:1234 

per attivare il reindirizzamento dei dati quindi digitare

exit 

Step2.3: Avviare il debugger gdb del computer locale. Ingresso:

arm-linux-androideabi-gdb.exe YOUR_ EXECUTABLE_PATH_ON_LOCAL_MACHINE\testexec 

Dopo di che, inseriti

target remote localhost:1234 

per la connessione a gdbserver.

Infine, godetevi il debugging!

+0

sapresti come connetterti con telnet al dispositivo reale - non un emulatore? Stavo cercando di interrogare per l'ip con 'adb shell ip -f inet addr show' ma non riesco a connettermi – Chris

Problemi correlati