Desinfetante de endereço: HWASan/ASan
Os desenvolvedores da plataforma Android usam HWAddressSanitizer (HWASan) para encontrar bugs de memória em C/C++.
Você pode atualizar imagens HWASan pré-construídas para dispositivos Pixel compatíveis em ci.android.com ( instruções detalhadas de configuração ).
Desde o Android 8.0 (Oreo) também é possível usar o ASan para depurar aplicativos em dispositivos de produção sem acesso root. Você pode encontrar instruções no wiki do ASan .Heapprofd
O Android 10 oferece suporte ao heapprofd, um perfilador de heap de amostragem de baixa sobrecarga. heapprofd permite atribuir o uso de memória nativa às pilhas de chamadas em seu programa. Consulte heapprofd - Android Heap Profiler no site de documentação do Perfetto para obter mais informações.
Depuração Malloc
Consulte Malloc Debug e Native Memory Tracking usando libc Callbacks para obter uma descrição completa das opções de depuração disponíveis para problemas de memória nativa.
libmemunalcançável
O libmemunreachable do Android é um detector de vazamento de memória nativo com sobrecarga zero. Ele usa um coletor de lixo impreciso de marcação e varredura em toda a memória nativa, relatando quaisquer blocos inacessíveis como vazamentos. Consulte a documentação do libmemunreachable para obter instruções de uso.
Ganchos Malloc
Se você deseja construir suas próprias ferramentas, a libc do Android também suporta a interceptação de todas as chamadas gratuitas/alocadas que acontecem durante a execução do programa. Consulte a documentação do malloc_hooks para obter instruções de uso.
Estatísticas do Malloc
O Android suporta as extensões mallinfo(3)
e malloc_info(3)
para <malloc.h>
. A função malloc_info
está disponível no Android 6.0 (Marshmallow) e superior e seu esquema XML está documentado em <malloc.h>
da Bionic.
Servidor de monitoramento de depuração Dalvik
Você também pode usar o Dalvik Debug Monitor Server (DDMS) para obter uma visualização gráfica da saída do Malloc Debug.
Para usar o DDMS, primeiro ative sua UI de memória nativa:
- Abra
~/.android/ddms.cfg
- Adicione a linha:
native=true
Ao reiniciar o DDMS e selecionar um processo, você pode alternar para a nova guia de alocação nativa e preenchê-la com uma lista de alocações. Isto é especialmente útil para depurar vazamentos de memória.