我正在尝试使用google提供的Simpleperf工具来分析android上的本地代码。
我已经完成了示例中列出的每个步骤,将security.perf_harden
设置为0,检查我正在使用的设备(Nexus9平板电脑)的体系结构,最后在设备外壳中使用以下命令启动SimplePerf:
./simpleperf record -p 10910 --duration 5
但结果,我得到了
simpleperf I 04-05 10:53:27 11773 11773 cmd_record.cpp:341] Samples recorded: 0. Samples lost: 0.
我似乎不能让simpleperf记录任何样本。我用
-g
标记在debug中编译了我的本机库,我的android应用程序被标记为android:debuggable=true
(尽管很明显我可以省略这一点,只在debug中编译)。在这一点上,我无法指出SimplePerf记录样本可能缺少什么。如果我尝试一个简单的:
./simpleperf report
之后,这就是我的结局:
Cmdline: /data/data/com.my.app_package/simpleperf record -p 10910 --duration 5
Arch: arm64
Event: cpu-cycles (type 0, config 0)
Samples: 0
Event count: 0
Overhead Command Pid Tid Shared Object Symbol
我在这里做错了什么或错过了什么?
最佳答案
分析时是否正在使用应用程序。如果进程与CPU无关,并且处于睡眠模式,则可能无法获取样本。
https://android.googlesource.com/platform/system/extras/+show/master/simpleperf/README.md#457