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.