Дезинфицирующее средство для адресов: 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 .
Маллок крючки
Если вы хотите создать свои собственные инструменты, libc Android также поддерживает перехват всех вызовов выделения/освобождения, которые происходят во время выполнения программы. Инструкции по использованию см. в документации malloc_hooks .
Статистика Маллока
Android поддерживает расширения mallinfo(3)
и malloc_info(3)
для <malloc.h>
. Функция malloc_info
доступна в Android 6.0 (Marshmallow) и более поздних версиях, а ее XML-схема документирована в <malloc.h>
от Bionic.
Сервер Dalvik Debug Monitor
Вы также можете использовать сервер Dalvik Debug Monitor (DDMS) для получения графического представления результатов отладки Malloc.
Чтобы использовать DDMS, сначала включите его собственный пользовательский интерфейс памяти:
- Откройте
~/.android/ddms.cfg
- Добавьте строку:
native=true
После перезапуска DDMS и выбора процесса вы можете переключиться на новую вкладку собственного распределения и заполнить ее списком распределений. Это особенно полезно для устранения утечек памяти.