我目前正在开展一个项目,旨在找出系统在Android UI上进行一系列用户交互的背后所做的事情。例如,如果用户单击Facebook Messenger中的“发送”按钮,则此操作的测量响应时间为1.2秒。我的目标是弄清楚1.2秒的内容。我的朋友建议我应该看看Systrace'。
然而,当我在HTC one M8上尝试systrace时,我遇到了一些问题: 首先,错误打开/ sys / kernel / debug / tracing / options / overwrite - 没有这样的文件或目录。我通过在http://opensourceforu.com/2010/11/kernel-tracing-with-ftrace-part-1/和mount -t debugfs none / sys / kernel / debug之后构建内核支持来解决这个问题。然后我可以找到跟踪目录。此外,我在Ramdisk的文件default.prop中设置ro.debuggable = 1并将boot.img刻录到我的手机中。
现在我遇到另一个问题:当我运行时 - python systrace.py --time = 10 -o mynewtrace.html sched gfx view wm,出现以下错误(19):错误截断/ sys / kernel / debug / tracing / set_ftrace_filter:没有这样的设备(19)。我不知道构建内核支持systrace的方式是不正确还是缺少任何东西。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
我想我已经找到了解决方案。我的环境是Ubuntu 16.04 + HTC one M8。我将写下以下步骤:
$adb shell
$su
(2)$mount -t debugfs none /sys/kernel/debug
。现在,您应该能够在/ sys / kernel / debug /下看到许多目录。 (您可以通过cd进入/ sys / kernel / debug来确认这一点)dd if=/dev/block/platform/msm_sdcc.1/by-name/boot of=/sdcard/boot.img
以从您的设备生成boot.img内核映像。ro.debuggable=0
更改为ro.debuggable=1
。重新打包boot.img并将其启动到您的设备。python systrace.py --time=10 -o mynewtrace.html sched gfx view wm