Отладка использования встроенной памяти

Дезинфицирующее средство для адресов: HWASan / ASan

Разработчики Android платформы используют HWAddressSanitizer (HWASan) , чтобы найти ошибки памяти в C / C ++.

Вы можете прошить прекомпилированную HWASan изображений для поддерживаемых устройств Pixel от ci.android.com ( подробные инструкции по установке ).

Начиная с Android 8.0 (Oreo) также можно использовать ASan для отладки приложений на производственных устройствах без рута. Вы можете найти инструкции по вики Асан .

Heapprofd

Android 10 поддерживает heapprofd, профилировщик кучи с низкими накладными расходами. heapprofd позволяет вам приписать использование собственной памяти стекам вызовов в вашей программе. См heapprofd - Android Heap Profiler на сайте документации Perfetto для получения дополнительной информации.

Отладка Malloc

См Malloc Debug иNative Tracking памяти спомощью Libc обратных вызовов для тщательного описания отладочных опций , доступных для собственных проблем с памятью.

libmemunreachable

Android libmemunreachable - это детектор утечек памяти с нулевыми накладными расходами. Он использует неточную метку и очистку сборщика мусора по всей собственной памяти, сообщая о любых недостижимых блоках как об утечках. См libmemunreachable документации для получения инструкций по использованию.

Крючки маллок

Если вы хотите создать свои собственные инструменты, Android libc также поддерживает перехват всех вызовов выделения / освобождения, которые происходят во время выполнения программы. См malloc_hooks документации для получения инструкций по использованию.

Статистика Malloc

Android поддерживает mallinfo(3) и malloc_info(3) расширения для <malloc.h> . malloc_info функция доступна в Android 6.0 (Зефир) и выше , и его XML - схема описана в Bionic - х <malloc.h> .

Сервер монитора отладки Dalvik

Вы можете также использовать Dalvik Debug Monitor Server , (DDMS) , чтобы получить графическое представление вывода Malloc отладки.

Чтобы использовать DDMS, сначала включите его собственный интерфейс памяти:

  1. Открыть ~/.android/ddms.cfg
  2. Добавьте строку: native=true

После перезапуска DDMS и выбора процесса вы можете переключиться на новую вкладку собственного распределения и заполнить ее списком распределений. Это особенно полезно для отладки утечек памяти.