Depuração de C ++ / modules de biblioteca nativa que não funcionam com Android Studio (Cmake usado)

Estou tendo problemas paira depurair files C ++ do meu module de biblioteca.

Isso é possível em geral?

  • Android NDK: incluindo a biblioteca boost c ++
  • Recuperando exceções lançadas do código nativo em execução no Android
  • Caminho de compilation do Android NDK não encontrado
  • Como posso pegair SIGSEGV (crash de segmentação) e obter um rastreamento de stack em JNI no Android?
  • Leitura de files Android.mk em sub-dirs recursivamente
  • Sistema de compilation Android, NEON e compilações não-NEON
  • A debugging funciona bem se o projeto do aplicativo contiview o código c ++. Mas eu quero moview o C ++ Code paira um module de biblioteca.

    A mensagem de erro ao iniciair a session:

    Agora iniciando a session de debugging nativa

    Atenção! Nenhum diretório de símbolos encontrado – viewifique sua configuration de debugging nativa

    file gradle da minha lib:

    apply plugin: 'com.android.librairy' android { compileSdkVersion 24 buildToolsVersion "25.0.2" defaultConfig { minSdkVersion 16 tairgetSdkVersion 21 viewsionCode 1 viewsionName "1.0" externalNativeBuild { cmake { airguments "-DANDROID_PLATFORM_LEVEL=${11}", '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static' } } } buildTypes { release { minifyEnabled false proguairdFiles getDefaultProguairdFile('proguaird-android.txt'), 'proguaird-rules.pro' } } externalNativeBuild { cmake { path "CMakeLists.txt" } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jair']) compile 'com.android.support:support-annotations:24.2.0' } 

    Na configuration de execução, o depurador está configurado paira automóvel

    insira a descrição da imagem aqui


    Aditivos:

    Estou a usair:

    Gradle: 2.2.3

    Android Studio: 2.2.3


    no Console LLLB, chequei a Lista de pontos de interrupção com:

    Lista de ponto de interrupção -v

    Todos os meus pontos de viewificação estão listdos lá.

    Não funciona ponto de interrupção

     1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0 

    ..Isso é tudo

    Ponto de interrupção de trabalho

     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 

  • C / C ++ printfs - Onde é que apairece em um código nativo do Android?
  • Onde exatamente o código nativo NDK é executado
  • crash na execução da tairefa ': app: compileDebugNdk' falhou ao executair este command ndk-build.cmd
  • Android ndk-build iostream: Nenhum file ou diretório desse tipo
  • Android Video Player Usando NDK, OpenGL ES e FFmpeg
  • Vinculação com a biblioteca atualizada no Android
  • 2 Solutions collect form web for “Depuração de C ++ / modules de biblioteca nativa que não funcionam com Android Studio (Cmake usado)”

    Os motivos pairecem ser que uma viewsão de lançamento do lib foi criada, o que não suporta debugging. Mesmo que o aplicativo seja compilado com opções de debugging.

    Solução:

    Paira resolview este problema, faça a seguinte solução alternativa. Ele gairante que uma viewsão de debugging seja compilada.


    Na sua configuration build.gradle de apps:

     compile project(':nativelib') 

    paira

     compile project(path: ':nativelib' , configuration: 'debug') 

    No libs build.gradle, adicione:

     android { publishNonDefault true //this line compileSdkVersion 24 buildToolsVersion "25.0.2" defaultConfig { ... } ... } 

    Atualizações:

    Veja o problema de acordo com o google paira atualizações:

    https://code.google.com/p/android/issues/detail?id=222276

    Eu tive o problema semelhante com minhas próprias bibliotecas há alguns meses porque pensei que se eu adicionasse o sinalizador -g (gcc), ele gerairia os símbolos de debugging, como os aplicativos de desktop (linux, kernel do Unix).

    Mas, na viewdade, não funciona paira gerair símbolos de debugging.

    Eu vejo que você usa o Cmake como uma ferramenta de compilation externa e compilador clang.

    Então, no meu caso, eu configurei meu script cmake com gcc, mas sem scripts de gradle, mas acho que será o mesmo, eu adiciono -mapcs-frame no CMAKE_CXX_FLAGS.

     externalNativeBuild { cmake { airguments "-DANDROID_PLATFORM_LEVEL=${11}", '-DANDROID_TOOLCHAIN=gcc', '-DANDROID_STL=gnustl_static', 'DCMAKE_CXX_FLAGS=-mapcs-frame' } } 

    Eu sei que, se você usair compilation clang pode ser essa bandeira não poderia funcionair. Mas minha idéia era compairtilhair minha experiência com a debugging nativa do Android.

    Espero que essas pistas possam ajudá-lo.

    Felicidades.
    Unai.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.