Depuración de módulos de biblioteca C ++ / nativa que no funcionan con Android Studio (Cmake utilizado)
Tengo problemas para depurar archivos C ++ de mi módulo de biblioteca.
¿Es esto posible en general?
- Galaxy Tab en el dispositivo de depuración?
- Eclipse salta líneas mientras depura
- "'Esto' no está disponible" en las ventanas de depuración de Android Studio
- Galaxy S5 Lollipop - no todos los puntos de interrupción detienen la ejecución bajo Android Studio debugger
- Depurar código nativo en la Biblioteca de Android
La depuración funciona bien si el proyecto de aplicación contiene el código c ++. Pero quiero mover el código C ++ a un módulo de biblioteca.
El mensaje de error al iniciar la sesión:
Inicio de la sesión de depuración nativa
¡Atención! No se han encontrado directorios de símbolos – compruebe su configuración de depuración nativa
Gradle file de mi lib:
apply plugin: 'com.android.library' android { compileSdkVersion 24 buildToolsVersion "25.0.2" defaultConfig { minSdkVersion 16 targetSdkVersion 21 versionCode 1 versionName "1.0" externalNativeBuild { cmake { arguments "-DANDROID_PLATFORM_LEVEL=${11}", '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static' } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } externalNativeBuild { cmake { path "CMakeLists.txt" } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-annotations:24.2.0' }
En la configuración de ejecución, el depurador se establece en auto
Adiciones:
Estoy usando:
Gradle: 2.2.3
Android Studio: 2.2.3
En la consola de LLLB, comprobé el punto de interrupción Lista con:
Lista de puntos de interrupción -v
Todos mis puestos de control se enumeran allí.
No funciona punto de interrupción
1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0
..eso es todo
Punto de interrupción de trabajo
1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0 1.1: module = C:\android-dev\...\test.so compile unit = gl_code.cpp function = testFunc(..) location = C:\android-dev\...\test.cpp:16 address = 0x0000007f871d068c resolved = true hit count = 1
- Ambiente de depuración aparentemente inútil para Android
- ¿Cómo se puede "Mostrar límites de diseño" para la depuración de Android?
- Mapas de Android NullPointerException ItemizedOverlay
- El depurador de Android Studio no se detiene en puntos de interrupción dentro de módulos de biblioteca
- NDK Debug para Nexus 9 arm64-v8a no funciona para eclipse
2 Solutions collect form web for “Depuración de módulos de biblioteca C ++ / nativa que no funcionan con Android Studio (Cmake utilizado)”
Las razones parecen ser que se crea una versión de lanzamiento de la lib, que no admite la depuración. Incluso si la aplicación se crea con opciones de depuración.
Solución:
Para solucionar este problema, realice la siguiente solución. Se asegura que una versión de depuración sea compilada.
En tus aplicaciones build.gradle cambiar:
compile project(':nativelib')
a
compile project(path: ':nativelib' , configuration: 'debug')
En las librerías build.gradle agregar:
android { publishNonDefault true //this line compileSdkVersion 24 buildToolsVersion "25.0.2" defaultConfig { ... } ... }
Actualizaciones:
Consulte el problema de google correspondiente para las actualizaciones:
Tuve el problema similar con mis propias bibliotecas hace algunos meses porque pensé que si agregué el indicador -g (gcc) generaría los símbolos de depuración, como las aplicaciones de escritorio (linux, kernel unix).
Pero, en realidad, no funciona para generar símbolos de depuración.
Veo que utilizas Cmake como una herramienta de compilación externa y un compilador clang.
Así que en mi caso configuro mi script cmake con gcc pero fuera de gradle scripting, pero creo que será el mismo, agrego -mapcs-frame en el CMAKE_CXX_FLAGS.
externalNativeBuild { cmake { arguments "-DANDROID_PLATFORM_LEVEL=${11}", '-DANDROID_TOOLCHAIN=gcc', '-DANDROID_STL=gnustl_static', 'DCMAKE_CXX_FLAGS=-mapcs-frame' } }
Sé que si usted utiliza la compilación del clang puede ser esta bandera no podría trabajar. Pero mi idea era compartir mi experiencia con la depuración nativa de Android.
Espero que estas pistas puedan ayudarte.
Aclamaciones.
Unai.
- Cómo depurar un libarary compartido de la aplicación android
- IntelliJ no se detiene en puntos de interrupción al depurar la aplicación android
- Android studio: depurar la aplicación en el dispositivo
- ¿Cómo puedo averiguar en qué intención comienza un servicio (no en mi aplicación)?
- Android Studio 2.2.1: Depuración lenta
- Error de inicio: Error al conectarse a la VM remota
- ¿Cómo pausar Eclipse en cualquier excepción?
- IntelliJ IDEA editar código de android durante la depuración
- ¿Qué hace que esta aplicación de Android sea debatible?
- Android studio CPU Herramienta de rendimiento de uso-comprensión de la traza
- El depurador de Android Studio no muestra variables locales
- Avanzar a través del código de Android en el teléfono - discrepancia número de línea grande