Skip to content

MASTG-TEST-0040: Teste para Debugging Symbols

Deprecated Test

This test is deprecated and should not be used anymore. Reason: New version available in MASTG V2

Please check the following MASTG v2 tests that cover this v1 test:

Visão Geral

Análise Estática

Os símbolos geralmente são removidos durante o processo de compilação, portanto, você precisa do bytecode compilado e das bibliotecas para garantir que metadados desnecessários foram descartados.

Primeiro, localize o binário nm no seu Android NDK e exporte-o (ou crie um alias).

export NM = $ANDROID_NDK_DIR/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-nm

Para exibir símbolos de depuração:

$NM -a libfoo.so
/tmp/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-nm: libfoo.so: no symbols

Para exibir símbolos dinâmicos:

$NM -D libfoo.so

Alternativamente, abra o arquivo no seu disassembler preferido e verifique as tabelas de símbolos manualmente.

Símbolos dinâmicos podem ser removidos através do flag do compilador visibility. Adicionar este flag faz com que o gcc descarte os nomes das funções, preservando os nomes das funções declaradas como JNIEXPORT.

Certifique-se de que o seguinte foi adicionado ao build.gradle:

externalNativeBuild {
    cmake {
        cppFlags "-fvisibility=hidden"
    }
}

Análise Dinâmica

A análise estática deve ser usada para verificar debugging symbols.