Systrace - 错误截断/ sys / kernel / debug / tracing / set_ftrace_filter:没有这样的设备(19)无法启动

时间:2016-08-24 05:14:56

标签: ddms android-kernel systrace

我目前正在开展一个项目,旨在找出系统在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的方式是不正确还是缺少任何东西。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我想我已经找到了解决方案。我的环境是Ubuntu 16.04 + HTC one M8。我将写下以下步骤:

  1. 打开终端并输入:$adb shell
  2. (1)$su(2)$mount -t debugfs none /sys/kernel/debug。现在,您应该能够在/ sys / kernel / debug /下看到许多目录。 (您可以通过cd进入/ sys / kernel / debug来确认这一点)
  3. 新建一个新终端并输入:dd if=/dev/block/platform/msm_sdcc.1/by-name/boot of=/sdcard/boot.img以从您的设备生成boot.img内核映像。
  4. 使用AndroidImageKitchen解压缩boot.img并在Ramdisk文件夹中找到default.prop。然后将ro.debuggable=0更改为ro.debuggable=1。重新打包boot.img并将其启动到您的设备。
  5. 设备启动后,在终端下输入:adb root和消息,如:以root身份重新启动adbd可能会弹出。断开USB连接并重新连接。
  6. cd到systrace文件夹,例如〜/ androidSDK / platform-tools / systrace并使用: python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
  7. 现在您可以生成自己的systrace文件。