Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: is there any tool for profiling native code?

Tags:

I have only found one profiling tool - http://code.google.com/p/android-ndk-profiler/. Wasn't able to get it working so far, so I wonder if there are other tools available. I need to profile on a physical device, as my application doesn't even work on emulator.

like image 706
Violet Giraffe Avatar asked Oct 09 '11 15:10

Violet Giraffe


2 Answers

The Shiny profiler is platform independent, it runs anywhere and it does not have any dependencies besides a standard C++ compiler. In its more simple usage, all you need to do is add a macro at the beginning of all functions and methods (or at least those that you want to profile).

like image 154
Miguel Avatar answered Sep 17 '22 23:09

Miguel


It is not easy to make the Android-NDK profiler work. You need to follow the steps here thoroughly.

Here are some tips that led me to success:

  • Make sure your android.mk is correct and that you export the NDK_MODULE_PATH.
  • Use correctly the following functions

    monstartup("your_lib.so");

    moncleanup();

  • If the gmon.out is generated now you need to pull it from the device, but not to anywhere in your PC. For me it only works if I go to the application's folder (where jni, obj, res and other folders are) and I do:

    console$ adb pull sdcard/gmon.out

  • Then run gprof. Try will all the versions in your NDK toolchains. For me only one worked, this one:

    console$ ~/Libraries/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

like image 33
Jav_Rock Avatar answered Sep 21 '22 23:09

Jav_Rock