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