Cómo depurar el uso de la memoria nativa

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 entornos de producción sin permisos de administrador dispositivos. Puedes encontrar instrucciones en la wiki de ASan.

Heapprofd

Android 10 admite heapprofd, un generador de perfiles de montón de muestreo de baja sobrecarga. heapprofd te permite atribuir el uso de memoria nativa a las pilas de llamadas de tu programa. Consulta heapprofd: Generador de perfiles de montón de Android 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 mediante 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

libmemunreachable de Android es un detector de fugas de memoria nativa sin sobrecarga. Usa un recolector de elementos no utilizados de marcación y limpieza impreciso que pasa por toda la memoria nativa y informa los bloques inaccesibles como fugas. Consulta la libmemunreachable documentación para obtener instrucciones de uso.

Hooks malloc

Si quieres compilar tus propias herramientas, la libc de Android también admite la interceptación de todos asignación o llamadas gratuitas que ocurren durante la ejecución del programa. Consulta la hooks_malloc documentación 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. su esquema XML se documenta en el <malloc.h>

Dalvik Debug Monitor Server

También puedes usar el Dalvik Debug Monitor Server (DDMS) para obtener una vista gráfica del resultado de la depuración de Malloc.

Para usar DDMS, primero debes activar su IU de memoria nativa:

  1. Abrir ~/.android/ddms.cfg
  2. Agrega la línea native=true.

Después de reiniciar DDMS y seleccionar un proceso, puedes cambiar al nuevo de asignación nativa y la propagará con una lista de asignaciones. Este es especialmente útil para depurar fugas de memoria.