Я нашел только один инструмент профилирования - http://code.google.com/p/android-ndk-profiler/. Пока не удалось заставить его работать, поэтому мне интересно, есть ли другие инструменты. Мне нужно профиль на физическом устройстве, так как мое приложение даже не работает на эмуляторе.
Android: есть ли какой-нибудь инструмент для профилирования собственного кода?
Ответ 1
Нелегко сделать работу профилировщика Android-NDK. Вам необходимо выполнить шаги здесь.
Вот несколько советов, которые привели меня к успеху:
- Убедитесь, что ваш android.mk верен и вы экспортируете NDK_MODULE_PATH.
-
Правильно используйте следующие функции
monstartup ( "your_lib.so" );
moncleanup();
-
Если теперь создается gmon.out, вам нужно вытащить его с устройства, но нигде на вашем ПК. Для меня это работает, только если я перейду в папку приложения (где jni, obj, res и другие папки), и я:
консоль $ adb pull sdcard/gmon.out
-
Затем запустите gprof. Попробуйте все версии в своих инструментальных средствах NDK. Для меня работал только один:
консоль $ ~/Библиотеки/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gprof obj/local/armeabi-v7a/libxxxx.so > profile.txt
Ответ 2
Блестящий профайлер независим от платформы, он работает в любом месте и у него нет никаких зависимостей, кроме стандартного компилятора С++. В более простом использовании все, что вам нужно сделать, это добавить макрос в начале всех функций и методов (или, по крайней мере, те, которые вы хотите профилировать).
Ответ 3
Intel VTune Amplifier. Этот профилировщик позволяет собирать горячие точки со стеками на устройствах Android без корневой или любой модификации ОС. Вот простое руководство: http://software.intel.com/en-us/articles/using-intel-vtune-amplifier-on-non-rooted-android-devices
Ответ 4
В NDK r13b появился новый инструмент под названием simpleperf