Richiamo il NDK di debug di Android ND qui!Come faccio a eseguire il debug della lib nativa di Android in eclipse con ARM DS-5 senza impazzire?
Ho provato così tante esercitazioni per il debug del codice nativo di Android, quindi non riesco a ricordarle tutte. Ora sto cercando di ottenere lavoro ARM DS-5. L'ho fatto funzionare con gli esempi NDK di Android, dove l'attività principale carica la libreria. Laggy, ma funziona.
Ma il mio progetto è un po 'complicato. La mia attività principale ha un pulsante, quando lo tocco, viene lanciato SubActivity e carica lib nativa. Quando cerco solo di utilizzare il debugger DS-5, quando principale attività è caricato, suppongo debugger tenta di connettersi a lib, ma non riesce, dicendo:
Execution stopped at: 0xAFD0C52C
Connected to unknown platform
0xAFD0C52C POP {r4,r7}
file "D:\workspace\Project\bin\app_process"
WARNING(IMG53): app_process has no line debug information
add-symbol-file "D:\workspace\Project\bin\libc.so"
Loading library symbols: libc.so
WARNING(IMG53): libc.so has no line debug information
Execution stopped at: 0xAFD0C748
In thread 2 (OS thread id 7606)
In __futex_syscall3 (no debug info)
add-symbol-file "D:\workspace\Project\obj\local\armeabi\libName.so"
Execution stopped at: 0xAFD0C748
In thread 3 (OS thread id 7607)
Execution stopped at: 0xAFD0BFFC
In thread 4 (OS thread id 7608)
In __rt_sigtimedwait (no debug info)
Execution stopped at: 0xAFD0B854
In thread 5 (OS thread id 7609)
In select (no debug info)
Execution stopped at: 0xAFD0C748
In thread 6 (OS thread id 7610)
In __futex_syscall3 (no debug info)
Execution stopped at: 0xAFD0B70C
In thread 7 (OS thread id 7611)
In __ioctl (no debug info)
Execution stopped at: 0xAFD0B70C
In thread 8 (OS thread id 7612)
Execution stopped at: 0xAFD0C52C
In thread 1 (OS thread id 7605)
In epoll_wait (no debug info)
0xAFD0C52C POP {r4,r7}
WARNING(CMD454): The shared library D:\workspace\Project\obj\local\armeabi\libName.so is currently not loaded by the application so the request has been pended
cd "D:\workspace"
Working directory "D:\workspace"
directory "D:\workspace\Project"
Source directories searched: D:\workspace\Project;$cdir;$cwd;$idir
break -d -p "D:\workspace\Project\jni\Name.cpp":525
WARNING(CMD452-COR167):
! Breakpoint 1 has been pended
! No compilation unit matching "D:/workspace/Project/jni/Name.cpp" was found
condition 1
break-script 1 ""
ignore 1 0
break-stop-on-threads 1
unsilence 1
Breakpoint 1 unsilenced
penso che tenta di connettersi a lib nativo quando Inizia l'attività principale. Ma la libreria è caricata più tardi!
Quello che ho cercato:
- Impostazione Java punto di interruzione in sottoattività, dopo lib nativo è stato caricato, quindi collegare DS-5 debugger. Ma ricevo vari errori da Eclipse che dicono di timeout, qualunque cosa.
- Nelle impostazioni di configurazione di debug non posso selezionare l'attività, che dovrebbe far scattare il debug di codice nativo, c'è combobox, ma è disabilitato:
La domanda stessa: se il mio lib non è caricato da Attività principale, come faccio a fare in modo che DS-5 attenda il caricamento della lib?
Potrebbe non essere consigliabile per il prodotto di rilascio, ma è sufficiente spostare la chiamata System.loadlibrary all'attività di apertura? Le chiamate successive a loadlibrary sono noops. –
Che ne dici di andare dall'altra parte .. Basta eseguire l'attività secondaria. Dovrebbe essere indipendente comunque? – baash05
ps .. se è complicato, lo stai facendo male :) – baash05