用于本机可执行文件的Android NDK分析器不产生任何数据

时间:2015-03-01 04:30:39

标签: android c android-ndk profiling

我正在使用Android NDK通过include $(BUILD_EXECUTABLE)构建本机C / C ++二进制文件。我已根据他们的说明将android-ndk-profiler模块添加到我的Android.mk中,并添加了对monstartupmoncleanup的调用。

在root设备上运行二进制文件会产生gmon.out,一切似乎都正常工作。但运行$ ANDROID_NDK / toolchains /.../ arm-linux-androideabi-gprof会显示标题和说明,但不会显示实际数据。

我知道该探查器旨在用于本机共享库而不是可执行文件,但是可以使其工作吗?

1 个答案:

答案 0 :(得分:0)

可以通过欺骗探查器来分析可执行文件,使您认为可执行文件实际上是一个共享库。分析器要求您将库名称传递给monstartup,以便它可以查找内存映射信息。如果你传递它" your_lib.so",它将寻找名称为" libyour_lib.so"的映射。

所以在你的启动代码中,输入:

monstartup("myexecutable.so");

将二进制文件推送到您的设备并将其重命名为 lib myexecutable.so。然后运行它并享受您的分析数据。

注意:这是使用NDK r10d和android-ndk-profiler 3.3测试的。