2012-01-14 4 views
6

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?

enter image description here

+0

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. –

+0

Che ne dici di andare dall'altra parte .. Basta eseguire l'attività secondaria. Dovrebbe essere indipendente comunque? – baash05

+0

ps .. se è complicato, lo stai facendo male :) – baash05

risposta

0

non si ha realmente bisogno di avere comportamenti esatta tra debug e rilasciare la versione? In caso contrario, caricare la libreria nell'attività principale, anche nella versione di debug.