Address Sanitizer: HWASan/ASan
Los desarrolladores de la plataforma de Android usan HWAddressSanitizer (HWASan) para encontrar errores de memoria en C/C++.
Puedes escribir en la memoria flash imágenes de HWASan compiladas previamente en dispositivos Pixel compatibles desde ci.android.com (instrucciones de configuración detalladas).
A partir de Android 8.0 (Oreo), también es posible usar ASan para depurar apps en dispositivos de producción sin derechos de administrador. Puedes encontrar instrucciones en la wiki de ASan.Heapprofd
Android 10 admite heapprofd, un generador de perfiles de montón de muestreo con baja sobrecarga. heapprofd te permite atribuir el uso de la memoria nativa a las pilas de llamadas de tu programa. Consulta heapprofd: Android Heap Profiler en el sitio de documentación de Perfetto para obtener más información.
Depuración de malloc
Consulta Depuración de malloc y Cómo realizar un seguimiento de la memoria nativa con devoluciones de llamadas de libc para obtener una descripción detallada de las opciones de depuración disponibles para los problemas de memoria nativa.
libmemunreachable
La biblioteca libmemunreachable de Android es un detector de fugas de memoria nativa con una sobrecarga nula. Utiliza un paso impreciso de recolección de elementos no utilizados de marca y barrido en toda la memoria nativa, y registra cualquier bloque inaccesible como fuga. Consulta la documentación de libmemunreachable para obtener instrucciones de uso.
Hooks malloc
Si quieres compilar tus propias herramientas, libc de Android también admite la interceptación de todas las llamadas gratuitas o de asignación que ocurren durante la ejecución del programa. Consulta la documentación sobre malloc_hooks para obtener instrucciones de uso.
Estadísticas de malloc
Android admite las extensiones mallinfo(3)
y malloc_info(3)
para <malloc.h>
.
La función malloc_info
está disponible en Android 6.0 (Marshmallow) y versiones posteriores, y su esquema XML se documenta en <malloc.h>
de Bionic.
Servidor de supervisión de depuración de Dalvik
También puedes usar el Dalvik Debug Monitor Server (DDMS) para obtener una vista gráfica del resultado de Malloc Debug.
Para usar DDMS, primero activa su IU de memoria nativa:
- Abrir
~/.android/ddms.cfg
- Agrega la línea:
native=true
Cuando reinicies DDMS y selecciones un proceso, podrás cambiar a la nueva pestaña de asignación nativa y completarla con una lista de asignaciones. Esto es especialmente útil para depurar fugas de memoria.