per una versione più recente di NDK (sto usando R7C), è possibile costruire versione di debug da
- aggiungere
android:debuggable="true"
bandiera per <Application>
tag nel AndroidManifest.xml
- invocare
ndk-build
con NDK_DEBUG=1
(Flag NDK_DEBUG non necessario se si esegue ndk-build con shell unix)
su Windows, le cose diventano un po 'complicate perché per usare ndk-gdb
, hai ancora bisogno di bash (o cygwin) a partire da NDK r7c, tuttavia ndk-build
in esecuzione in cygwin bash si imbatterà in problemi di autorizzazione se usi mai una delle librerie statiche precostruite
mia soluzione sulla macchina Windows è
- aggiungere
android:debuggable="true"
bandiera per <application
tag AndroidManifest.xml
(come sopra)
- cmd (prompt dei comandi di Windows): invocare
ndk-build
con NDK_DEBUG=1
- in bash cygwin: run
ndk-gdb
per una rapida indagine iniziale di così libreria nativa, creare una semplice attività con un pulsante per attivare la funzione di libreria e loadLibrary
nell'attività come:
class MyActivity extends Activity {
static {
System.loadLibrary("mylibrary");
}
/* other functions like onCreate, etc... */
public native void libfunc();
public void onClick(View v){
libfunc();
}
}
Così, quando gdb
inizia, la libreria in questione è effettivamente caricata, ma è ancora possibile avere il tempo di impostare i punti di interruzione, ecc. Prima che il programma si blocchi; al termine dell'impostazione del debugger, al prompt , digitare (o semplicemente 'c
'), quindi premere il pulsante per avviare il programma in arresto e debugging felice ...
bello, ma non riesco ad accedervi: ( – Noam
@ognian il tuo account con il link è sospeso ... lol Vorrei conoscere anche la risposta a questa domanda mentre seguivo il link di asnwers e ho scoperto che neanche la soluzione funzionava. – JPM