¡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?
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. –
¿Qué tal si vamos por el otro lado? Solo ejecuta la subactividad. Debería estar solo de todos modos? – baash05
pd .. si es complicado, lo estás haciendo mal :) – baash05