我选择了几个跟踪标记,当我运行跟踪(来自DDMS
)时,我得到以下输出:
Unexpected error while collecting system trace. Unable to find trace start marker 'TRACE:':
error opening /sys/kernel/debug/tracing/options/overwrite:
No such file or directory (2)
error openi
(在此处切断错误)
确实内核目录中没有调试文件,但哪种机制会生成必要的路径?
答案 0 :(得分:6)
看起来您的手机正在运行不支持systrace的启动(内核)映像。
"错误打开/ sys / kernel / debug / tracing / options / overwrite:没有这样的文件或目录(2)"
此错误消息表示adb守护程序(在设备端运行的adb模块)无法在设备的文件系统中找到/ sys / kernel / debug / tracing / options / overwrite。 systrace通过adb工作,并通过/ sys / kernel / debug / tracing下的sysfs节点与内核通信。如果由于某种原因这些节点没有暴露在您的手机上,systrace将无法正常工作。
因此,您应首先使用以下方法在设备上获取shell:
adb shell
然后浏览以确认/ sys是否存在以及是否存在/ sys / kernel / debug / tracing。
如果他们在那里极不可能,你必须调试systrace.py来弄清楚systrace如何认为节点不在那里。否则,您需要刷新具有systrace支持的不同启动映像,因为sysfs由内核(主要是编译时的配置)和init.rc控制,这两者都是启动映像的一部分。
闪烁其他启动映像可能涉及解锁/生根设备。您可能需要访问xdadeveloper等粉丝网站获取信息和图片。另一个选择是为您的设备下载内核源代码,编译内核并自己制作启动映像。 Linux属于GPL,因此您的设备制造商有义务发布他们使用的专用内核的源代码。
答案 1 :(得分:1)
您可能需要稍微修改内核映像(boot.img)。以下工作为我找到,仅供您参考。
$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并将其启动到您的设备。$adb root
,可能会弹出消息:$restarting adbd as root
。断开USB连接并重新连接。python systrace.py --time=10 -o mynewtrace.html sched gfx view wm