Simpleperf 不记录任何样本

Posted

技术标签:

【中文标题】Simpleperf 不记录任何样本【英文标题】:Simpleperf not recording any sample 【发布时间】:2017-04-05 09:07:11 【问题描述】:

我正在尝试使用 Google 提供的 Simpleperf 工具在 android 上分析本机代码。

我已经完成了他们示例中列出的每一步,将 security.perf_harden 设置为 0,检查我正在使用的设备(Nexus 9 平板电脑)的架构,最后在设备的 shell 中使用以下命令启动 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 标志在调试中编译了我的本机库,我的Android 应用程序被标记为android:debuggable=true(尽管显然我可以省略它并仅在调试中构建)。在这一点上,我无法确定 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

我在这里做错了什么或遗漏了什么?

【问题讨论】:

【参考方案1】:

您是否在分析时使用该应用程序。如果该进程与 cpu 无关,并且处于睡眠模式,则可能您没有得到任何样本。 https://android.googlesource.com/platform/system/extras/+show/master/simpleperf/README.md#457

【讨论】:

以上是关于Simpleperf 不记录任何样本的主要内容,如果未能解决你的问题,请参考以下文章

simpleperf 火焰图

本科毕设研究记录————小样本综述

多条同样的记录只选取其中一条记录的SQL怎么写?

学习记录:正负样本分配策略之YoloX | SimOTA-简单易懂版

返回Oracle表中5%记录的随机样本

java 只是我的第一个要点的记录样本