Depuración del uso de la memoria nativa

Desinfectante de dirección: HWASan/ASan

Los desarrolladores de plataformas Android utilizan HWAddressSanitizer (HWASan) para encontrar errores de memoria en C/C++.

Puede actualizar imágenes HWASan prediseñadas en dispositivos Pixel compatibles desde ci.android.com ( instrucciones de configuración detalladas ).

Desde Android 8.0 (Oreo) también es posible utilizar ASan para depurar aplicaciones en dispositivos de producción no rooteados. Puede encontrar instrucciones en la wiki de ASan .

montónprofd

Android 10 es compatible con heapprofd, un generador de perfiles de montón de muestreo de pocos gastos generales. heapprofd le permite atribuir el uso de memoria nativa a las pilas de llamadas en su programa. Consulte heapprofd - Android Heap Profiler en el sitio de documentación de Perfetto para obtener más información.

depuración de malloc

Consulte Malloc Debug y Native Memory Tracking mediante libc Callbacks para obtener una descripción detallada de las opciones de depuración disponibles para problemas de memoria nativa.

libmemunalcanzable

libmemunreachable de Android es un detector de fugas de memoria nativo sin sobrecarga. Utiliza un recolector de basura impreciso de marca y barrido sobre toda la memoria nativa, informando cualquier bloque inalcanzable como fuga. Consulte la documentación de libmemunreachable para obtener instrucciones de uso.

ganchos malloc

Si desea crear sus propias herramientas, la libc de Android también admite la interceptación de todas las asignaciones/llamadas gratuitas que ocurren durante la ejecución del programa. Consulte la documentación de malloc_hooks para obtener instrucciones de uso.

malloc estadísticas

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 está documentado en <malloc.h> de Bionic.

Servidor de monitorización de depuración Dalvik

También puede utilizar Dalvik Debug Monitor Server (DDMS) para obtener una vista gráfica de la salida de Malloc Debug.

Para usar DDMS, primero active su interfaz de usuario de memoria nativa:

  1. Abra ~/.android/ddms.cfg
  2. Agregue la línea: native=true

Al reiniciar DDMS y seleccionar un proceso, puede cambiar a la nueva pestaña de asignación nativa y completarla con una lista de asignaciones. Esto es especialmente útil para depurar pérdidas de memoria.