2017 обновление: доступно valgrind для Android. Встроенная функция отладки malloc была значительно расширена в Android N и весьма полезна для поиска утечек памяти. Вам может понадобиться _exit()
приложение, чтобы вызвать дамп.
Описанная ниже функция DDMS в настоящее время получает краткое упоминание в официальных документах.
Существует экспериментальная неподдерживаемая функция, которой вы можете воспользоваться.
В файле конфигурации DDMS (например, ~/.android/ddms.cfg
в Linux) добавьте «native = true». Это активирует вкладку Native Heap.
Затем включите отслеживание выделения собственной кучи на устройстве и перезапустите каркас приложения:
% adb shell setprop libc.debug.malloc 1
% adb shell stop
% adb shell start
(Обратите внимание, что для этого требуется root. Обратите внимание также, что это относится только к последним версиям; в более старых выпусках вам также необходимо вручную заменить libc.so на libc_debug.so в / system / lib на устройстве.)
Вы можете определить, правильно ли настроено устройство, просмотрев вывод logcat при выполнении простой команды ("adb shell ls"). Если вы видите:
I/libc ( 4847): ls using MALLOC_DEBUG = 1 (leak checker)
тогда вы знаете, что включили его.
Теперь вы можете использовать функции вкладки "Собственная куча" для получения снимков использования памяти кучи.
DDMS автоматически извлечет символы из общих библиотек .../symbols/system/lib
в вашем исходном дереве Android. Конечно, для этого требуется, чтобы у вас было полное дерево исходников Android, а на вашем устройстве выполнялся код, созданный из него. В противном случае трассировки стека не могут быть декодированы в имена символов, что снижает полезность функции.