我正在使用Android NDK通过include $(BUILD_EXECUTABLE)
构建本机C / C ++二进制文件。我已根据他们的说明将android-ndk-profiler模块添加到我的Android.mk中,并添加了对monstartup
和moncleanup
的调用。
在root设备上运行二进制文件会产生gmon.out,一切似乎都正常工作。但运行$ ANDROID_NDK / toolchains /.../ arm-linux-androideabi-gprof会显示标题和说明,但不会显示实际数据。
我知道该探查器旨在用于本机共享库而不是可执行文件,但是可以使其工作吗?
答案 0 :(得分:0)
可以通过欺骗探查器来分析可执行文件,使您认为可执行文件实际上是一个共享库。分析器要求您将库名称传递给monstartup
,以便它可以查找内存映射信息。如果你传递它" your_lib.so",它将寻找名称为" libyour_lib.so"的映射。
所以在你的启动代码中,输入:
monstartup("myexecutable.so");
将二进制文件推送到您的设备并将其重命名为 lib myexecutable.so。然后运行它并享受您的分析数据。
注意:这是使用NDK r10d和android-ndk-profiler 3.3测试的。