2012-01-14 8 views
6

¡Invoco el NDK para depurar Android Ninjas aquí!¿Cómo depuro lib nativo de Android en Eclipse con ARM DS-5 sin volverme loco?

He intentado tantos tutoriales sobre la depuración del código nativo de Android, así que no puedo recordarlos todos. Ahora estoy tratando de obtener ARM DS-5 trabajo. Lo he hecho funcionar con las muestras de Android NDK, donde la actividad principal carga la biblioteca. Laggy, pero funciona.

Pero mi proyecto es un poco complicado. Mi actividad principal tiene un botón, cuando lo toco, se inicia SubActivity y carga lib nativo. Cuando sólo trato de utilizar el DS-5 depurador, cuando se carga la actividad principal, supongo depurador intenta conectarse a lib, pero falla, diciendo:

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 

creo que intenta conectarse a lib nativo cuando La actividad principal comienza. ¡Pero la biblioteca se carga más tarde!

Lo que intenté:

  • Ajuste de punto de interrupción en la subactividad de Java, después lib nativa se cargó, luego adjuntar DS-5 depurador. Pero recibo varios errores de Eclipse diciendo sobre tiempos de espera, lo que sea.
  • En los ajustes de configuración de depuración no puedo seleccionar la actividad, que deben dar lugar a la depuración de código nativo, hay cuadro combinado, pero es deshabilitado:

La pregunta en sí misma: si mi lib no es cargado por Actividad principal, ¿cómo hago para que DS-5 espere a que se cargue lib?

enter image description here

+0

Puede que no sea deseable para el producto de lanzamiento, pero ¿puede simplemente mover su llamada System.loadlibrary a la actividad de apertura? Las llamadas posteriores a loadlibrary son noops. –

+0

¿Qué tal si vamos por el otro lado? Solo ejecuta la subactividad. Debería estar solo de todos modos? – baash05

+0

pd .. si es complicado, lo estás haciendo mal :) – baash05

Respuesta

0

lo que realmente necesita para tener un comportamiento exacta entre depurar y liberar la versión? De lo contrario, cargue la biblioteca en la actividad principal, también en la versión de depuración.

Cuestiones relacionadas