2010-08-11 13 views
5

Sto provando a eseguire il debug di un'applicazione build con NDK su un Motorola Droid. Sto seguendo le istruzioni here e ho avuto successo in passato su un emulatore (ho accesso di root, ovviamente), ma quando tento di avviareDebug Native Code su Motorola Droid

gdbserver :5039 --attach 1082 

attraverso il adb shell, ottengo un gdbserver:permission denied. Ovviamente visto che si tratta di un Droid di serie, non ho accesso root. È necessario? Mi manca qualcosa?

Grazie in anticipo!

Modifica Ho confermato che questo comando funziona sull'emulatore. Questo può essere fatto su un dispositivo senza motori?

Modifica 2 Ho anche confermato gli stessi errori Permission Denied su un EVO 4G.

Modifica 3 Ho anche scoperto che un dispositivo di produzione (ad esempio EVO 4G o Droid) non mi darà un errore "non trovato". Ad esempio, quando ho digitato qualcosa di casuale come ljs nella shell, ottengo ljs: permission denied. L'errore è lo stesso se il comando esiste e non posso accedervi (sudo - presumibilmente) o se il comando non esiste (ljs).

+0

non sono sicuro ... ma non è necessario Android 2.2 per eseguire il debug con gdb? Hai Android 2.2 sul tuo Droid? – hara

+0

Io no e per quanto mi ricordo, le istruzioni gdb/NDK esistevano prima del 2.2. Qualcuno può confermarlo? –

+0

Penso che anche i dispositivi non "rooted" possono eseguire 'su' tramite adb per accedere ai comandi della console privilegiati, ma non l'ho provato. Se funziona fammelo sapere e posterò una risposta adeguata. –

risposta

2

Se si utilizza ND4 r4, non si dovrebbe fare molto di questo. Invece:

  1. Aggiungi android: debuggable = "true" nel nodo dell'applicazione del ApplicationManifest.xml
  2. Per qualsiasi nativo (costruito con NDK) librerie, ripetere 1 # prima della loro costruzione (si dovrebbe notare un po 'più di informazioni quando si costruisce dove ndk-build sta copiando i file gdbserver e gdb.setup)
  3. Avvia $ NDK_ROOT/ndk-gdb con le opzioni desiderate (ad esempio: Io di solito si interrompe in Eclipse prima di colpire il codice nativo quindi si collega usando -E opzione)
1

vedo alcun riferimento a 'localhost' come per

 
gdbserver :5039 --attach pid 

nel link che hai dato - cioè sul portatile .... avete inoltrato la porta

 
adb forward tcp:5039 tcp:5039 

dalla workstation?

anche:

 
If you can't find either special version of gdb, run find prebuilt -name 
arm-eabi-gdb in your source tree to find and run the latest version 

Hai provato a usare 'arm-EABI-gdb' invece, sostituendo il gdb sopra con la versione esplicita ....?

+0

Ho rimosso il 'localhost' senza fortuna.Non ho provato nessuna delle versioni di gdb sul mio host perché non sono stato in grado di avviare il server sul dispositivo. –

Problemi correlati