Limpador de endereços: HWASan/ASan
Os desenvolvedores da plataforma Android usam o HWAddressSanitizer (HWASan) para encontrar bugs de memória em C/C++.
Atualize as imagens HWASan pré-criadas para dispositivos Pixel com suporte em ci.android.com (instruções de configuração detalhadas).
Desde o Android 8.0 (Oreo) também é possível usar o ASan para depurar apps em dispositivos de produção sem acesso root. Confira as instruções na wiki do ASan.Heapprofd
O Android 10 oferece suporte ao heapprofd, um criador de perfil de heap de amostragem de baixa sobrecarga. O heapprofd permite atribuir o uso da memória nativa a callstacks no seu programa. Consulte heapprofd - Android Heap Profiler no site de documentação do Perfetto para mais informações.
Depuração Malloc
Consulte Depuração Malloc e Rastreamento de memória nativa usando callbacks de libc para ver uma descrição completa das opções de depuração disponíveis para problemas de memória nativa.
libmemunreachable
A libmemunreachable do Android é um detector de vazamento de memória nativa de sobrecarga zero. Ela usa uma passagem imprecisa de marcação e varredura do coletor de lixo em toda a memória nativa, informando todos os blocos inacessíveis como vazamentos. Consulte a documentação da libmemunreachable para instruções de uso.
Hooks Malloc
Se você quiser criar as próprias ferramentas, a libc do Android também é compatível com a interceptação de todas as chamadas de alocação/livres que acontecem durante a execução do programa. Consulte a documentação do malloc_hooks (em inglês) para ver instruções de uso.
Estatísticas Malloc
O Android oferece suporte às 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 versões mais recentes.
O esquema XML dela está documentado no
<malloc.h> da Bionic.
Dalvik Debug Monitor Server
Você também pode usar o Dalvik Debug Monitor Server (DDMS) para ter uma visualização gráfica da saída da depuração Malloc.
Para usar o DDMS, primeiro ative a interface de memória nativa:
- Abra
~/.android/ddms.cfg - Adicione a linha:
native=true
Ao reiniciar o DDMS e selecionar um processo, você pode mudar para a nova guia de alocação nativa e preenchê-la com uma lista de alocações. Isso é especialmente útil para depurar vazamentos de memória.