解决android 4.4及5.1无法使用Systrace

 

Systrace的详细使用说明及介绍请参考:https://blog.csdn.net/LAMP_zy/article/details/53375521

最近接到客户反馈在android4.4版本的平台上适配新的apk出现了整个系统非常卡顿,UI刷新非常慢,从top -t -m 5和vmstat命令中无法分析出具体原因,咨询了公司的android系统方面的大神,需要使用SDK中的Systrace才能更好的分析问题的原因。于是在网上找到了相关博客了解并摸索抓trace进行分析,但是很不幸出现了打开节点的报错。

根据报错的信息来看,Systrace功能依赖/sys/kernel/debug/下面的traceing节点,但是打开失败。我用串口在cat /sys/kernel/debug/发现找不到traceing节点。一般来说traceing节点是android默认自带的,如果出现了有/sys/kernel/debug/,但是找不到traceing节点的问题就是在init.rc中执行了mount debugfs debugfs /sys/kernel/debug,但是中缺少某些config导致的。

请检查项目使用的deconfig文件,增加以下config:

CONFIG_TRACING=y

CONFIG_FTRACE=y

CONFIG_CONTEXT_SWITCH_TRACER=y

CONFIG_FUNCTION_TRACER=y

CONFIG_IRQSOFF_TRACER=y

CONFIG_SCHED_TRACER=y

CONFIG_STACK_TRACER=y

CONFIG_EVENT_TRACING=y

CONFIG_FTRACE_SYSCALLS=y

然后make clean,编译整机包升级验证。

如果升级起来出现kernel死掉,类似以下load_module ko出错

解决android 4.4及5.1无法使用Systrace_第1张图片

 

 

 

 

请在code中删除出错的闭源KO(客户项目中有一个idong200alg.ko,删掉该ko可以解决死机问题),然后重新编译

 

最后附上一张Systrace相关的资料,可能会有一些帮助:

解决android 4.4及5.1无法使用Systrace_第2张图片

 

在android5.1的客户项目中按照之前的步骤使用Systrace,执行到最后一步获取trace.html文件时,会一直提示以下错误

Unexpected error while collecting system trace.
Unable to find trace start marker 'TRACE:':
error opening /sys/kernel/debug/tracing/options/overwrite: Permission denied (13)
unable to start tr

解决android 4.4及5.1无法使用Systrace_第3张图片

最后在网上寻找到了解决办法,

先在adb中执行:adb root,然后再重新执行adb connect ip

 

你可能感兴趣的:(android,framework,android,APK)