我正在尝试使用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

10-04 23:05