解決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出錯

 

 

 

 

請在code中刪除出錯的閉源KO(客戶項目中有一個idong200alg.ko,刪掉該ko可以解決死機問題),然後重新編譯

 

最後附上一張Systrace相關的資料,可能會有一些幫助:

 

在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

最後在網上尋找到了解決辦法,

先在adb中執行:adb root,然後再重新執行adb connect ip

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章