Дезинфицирующее средство для адресов: HWAsan/ASan
Разработчики платформы Android используют HWAddressSanitizer (HWASan) для поиска ошибок памяти в C/C++.
Вы можете прошить готовые образы HWASan на поддерживаемые устройства Pixel с сайта ci.android.com ( подробные инструкции по установке ).
Начиная с Android 8.0 (Oreo) также можно использовать ASan для отладки приложений на рабочих устройствах без рута. Инструкции можно найти на вики ASan .Хиппрофд
Android 10 поддерживает heapprofd, профилировщик выборки кучи с низкими накладными расходами. heapprofd позволяет вам приписывать использование собственной памяти стекам вызовов в вашей программе. Дополнительную информацию см. в разделе heapprofd — Android Heap Profiler на сайте документации Perfetto .
Отладка Malloc
Подробное описание опций отладки, доступных для проблем с собственной памятью, см. в разделе Отладка Malloc иотслеживание собственной памяти с использованием обратных вызовов libc .
libmemunreachable
libmemunreachable для Android — это встроенный детектор утечек памяти с нулевыми издержками. Он использует неточный проход сборщика мусора пометки и очистки по всей собственной памяти, сообщая о любых недоступных блоках как об утечках. Инструкции по использованию см. в документации libmemunreachable .
Крючки Malloc
Если вы хотите создать свои собственные инструменты, libc Android также поддерживает перехват всех вызовов выделения/освобождения, которые происходят во время выполнения программы. Инструкции по использованию см. в документации по malloc_hooks .
Статистика Маллока
Android поддерживает mallinfo(3)
и malloc_info(3)
для <malloc.h>
. Функция malloc_info
доступна в Android 6.0 (Marshmallow) и выше, а ее XML-схема задокументирована в <malloc.h>
от Bionic.
Сервер мониторинга отладки Dalvik
Вы также можете использовать сервер мониторинга отладки Dalvik (DDMS) для получения графического представления вывода отладки Malloc.
Чтобы использовать DDMS, сначала включите собственный пользовательский интерфейс памяти:
- Откройте
~/.android/ddms.cfg
- Добавьте строку:
native=true
После перезапуска DDMS и выбора процесса вы можете переключиться на новую вкладку собственного распределения и заполнить ее списком распределений. Это особенно полезно для отладки утечек памяти.