visual studio r17b r16 r13 que ndk android android-ndk

android - studio - ndk r13



DepuraciĆ³n de Android NDK, en Windows (1)

para una versión más reciente de NDK (estoy usando r7c), puedes crear una versión de depuración

  1. agregue la android:debuggable="true" a la etiqueta <Application> en AndroidManifest.xml
  2. invocar ndk-build con NDK_DEBUG=1 (indicador NDK_DEBUG no es necesario si ejecuta ndk-build con shell unix)

en Windows, las cosas se vuelven un poco complicadas porque para usar ndk-gdb , todavía necesitas bash (o cygwin) a partir de NDK r7c, pero ndk-build ejecutándose en cygwin bash se encontrará con un problema de permisos si alguna vez utilizas alguno de los biblioteca estática construida

mi solución en la máquina de Windows es

  1. agregar android:debuggable="true" a <application etiqueta de <application en AndroidManifest.xml (igual que el anterior)
  2. en cmd (indicador de comando de Windows): invoque ndk-build con NDK_DEBUG=1
  3. en cygwin bash: ejecutar ndk-gdb

para una investigación inicial rápida de la biblioteca nativa, cree una actividad simple con un botón para activar la función de entrada de biblioteca y loadLibrary en la actividad como:

class MyActivity extends Activity { static { System.loadLibrary("mylibrary"); } /* other functions like onCreate, etc... */ public native void libfunc(); public void onClick(View v){ libfunc(); } }

Por lo tanto, cuando se inicia gdb , la biblioteca en cuestión está realmente cargada, pero aún puede tener tiempo para establecer puntos de corte, etc. antes de que el programa falle; cuando termine de configurar el depurador, en el indicador (gdb) , escriba continue (o simplemente '' c ''), luego presione el botón para iniciar el programa de bloqueo y depuración feliz ...

Estoy portando una aplicación C compleja a Android, como una biblioteca SO, envuelta con una fina capa de Java. Después de algunas horas de problemas, tengo el código compilado bajo Android, pero por supuesto, la aplicación falla :(

Después de mirar a mi alrededor, entiendo que la única manera de depurar la aplicación C en Android es mediante gdb. Como no tengo mucha experiencia con gdb, ¿alguien puede compartir algunas ideas?

Alguien tiene un tutorial para gdb en windows :)?

Gracias