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 imagens HWASan pré-criadas para dispositivos Pixel com suporte de ci.android.com (instruções detalhadas de configuração).
Desde o Android 8.0 (Oreo), também é possível usar o ASan para depurar apps em produção sem acesso root dispositivos. Confira instruções na wiki do ASan.Heapprofd
O Android 10 oferece suporte ao heapprofd, um criador de perfil de heap de baixa sobrecarga. O heapprofd permite atribuir o uso de memória nativa às pilhas de chamadas no programa. Consulte heapprofd: o Profiler de heap do Android no site de documentação do Perfetto para mais informações.
Depuração Malloc
Consulte Malloc Debug e Native Rastreamento de memória usando callbacks de libc para uma descrição completa do opções de depuração disponíveis para problemas de memória nativa.
libmemunacessível
O libmemunreachable do Android é um detector de vazamento de memória nativa sem sobrecarga. Ela usa um coletor de lixo de marcação e limpeza impreciso que passa por toda a memória nativa, denunciando bloqueios inacessíveis como vazamentos. Consulte a documentação libmemunreachable para instruções de uso.
Hooks Malloc
Caso queira criar suas próprias ferramentas, a libc do Android também é compatível com a interceptação de todos de alocação/sem custo financeiro que acontecem durante a execução do programa. Consulte a documentação do malloc_hooks (em inglês) para conferir 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 e
seu esquema XML é documentado no
<malloc.h>
.
Dalvik Debug Monitor Server
Você também pode usar o Dalvik Debug Monitor Server (DDMS) para ter uma visualização gráfica da depuração Malloc saída.
Para usar o DDMS, primeiro ative a interface da memória nativa:
- Abrir
~/.android/ddms.cfg
- Adicione a linha:
native=true
Ao reiniciar o DDMS e selecionar um processo, você pode alternar para o novo de alocação nativa e preenchê-la com uma lista de alocações. Isso é especialmente útil para depurar vazamentos de memória.