Endereço Sanitizer: HWASan / ASan
Os desenvolvedores da plataforma Android usam HWAddressSanitizer (HWASan) para encontrar bugs de memória em C / C ++.
Você pode fazer flash de imagens HWASan pré-construídas para dispositivos Pixel compatíveis 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 aplicativos em dispositivos de produção sem root. Você pode encontrar instruções no wiki ASan .Heapprofd
O Android 10 oferece suporte a heapprofd, um gerador de perfil de heap de amostragem de baixa sobrecarga. heapprofd permite atribuir o uso de memória nativa a callstacks 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 eNative Memory Tracking usando libc Callbacks para uma descrição completa das opções de depuração disponíveis para problemas de memória nativa.
libmemunhável
O libmemunreachable do Android é um detector de vazamento de memória nativa de sobrecarga zero. Ele usa uma passagem do coletor de lixo de marcação e varredura imprecisa sobre toda a memória nativa, relatando todos os blocos inacessíveis como vazamentos. Consulte a documentação 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 de alocação / gratuitas que acontecem durante a execução do programa. Consulte a documentação do malloc_hooks para obter instruções de uso.
Estatísticas Malloc
O Android suporta as mallinfo(3)
emalloc_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 no <malloc.h>
da Bionic.
Dalvik Debug Monitor Server
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 IU 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.