Профилирование приложений Android с использованием ltrace - PullRequest
3 голосов
/ 31 августа 2011

Мне нужно профилировать динамические вызовы библиотеки приложения для Android, и я решил профилировать с помощью инструмента "ltrace" для этой цели.Я объединил инструмент "ltrace" в пакет Android, затем успешно скомпилировал.Он отлично работает с программой оболочки, как и обычное консольное приложение linux.

Однако я не могу правильно профилировать приложения для Android, которые разветвляются из процесса "Zygote".Я попытался подключить ltrace к процессу "Zygote", чтобы следовать его дочерним процессам, но я получил только сигналы SIGCHLD и SIGSTOP и ненормально завершил работу, показывая следующие ошибки.

неожиданная инструкция 0xffffffff в 0xffff0508

Мне просто интересно, пробовал ли кто-нибудь когда-нибудь такое профилирование в системе Android.Любые короткие комментарии могут быть очень полезны для меня.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Попробуйте подключить ltrace к процессу вашего андроид-приложения после того, как оно разветвится от zygote.Вам понадобится ltrace, созданный для bionic libc Android, и тот, который имеет разумную обработку потоков.

Существует способ настроить приложение для отладки Android для ожидания подключения к отладчику Java, вы можете использовать его,подключите ltrace, а затем подключите и отключите Java-отладчик, чтобы снова запустить его.Это должно отражать большую часть вашей собственной логики, но не всю загрузку.

IIRC У вас ограничено время для подключения и возобновления работы, в противном случае он может возобновиться сам по себе, чтобы избежать запуска приложенияситуация не отвечает.

Возможно, вы узнаете больше, используя отладчик java, чтобы увидеть, что происходит, а затем прочитав исходный код, чтобы увидеть, как это реализовано на нативной стороне.

0 голосов
/ 13 апреля 2012

г. Путь Криса Страттона сработает.

LoadLibrary() - это еще один момент для устранения неполадок jni.

...