我正在尝试使用我的Android ndk应用程序中的simpleperf进行分析,但是当我输入simpleperf record命令时,系统会报告此消息:
simpleperf E 02-08 13:34:47 15380 15380 event_selection_set.cpp:68] 内核不支持事件类型'cpu-cycles'
我阅读了本教程:https://android.googlesource.com/platform/system/extras/+/master/simpleperf/README.md
我按照以下步骤操作:
Make android debuggable=true in the manifest.
adb shell setprop security.perf_harden 0
adb shell
shell@mako: run-as com.mysample.test
adb push bin/android/arm/simpleperf /data/local/tmp
shell@mako: cp /data/local/tmp/simpleperf .
shell@mako: ./simpleperf record -p 12083 --duration 30
这是否意味着硬件不支持nexus 4 cpu-cycles,或者我没有在内核上激活特定的安全标志?
我使用的是root用nexus 4设备。
Ndk 13b版。
Android版:5.1
内核版本:3.4.0-perf-gf75bb4f
pd:由于与perf的相似性,我标记了perf标记。
提前致谢。
垂发。
答案 0 :(得分:2)
Nexus 4支持cpu-cycles事件。我在git历史中找不到内核版本f75bb4f,所以我没有测试相同的内核。我已经通过在nexus 4上使用simpleperf在ndk-r13b中闪烁5.1.1(LMY48T)进行了测试,它可以工作。所以我怀疑你使用的内核禁用了perf事件,你可以通过在https://developers.google.com/android/images#occam中闪烁一个新图像来解决这个问题。