android 使用 perfetto 抓取atrace


最近項目的原因需要抓自定義的一些atrace,發現使用google 自帶的systrace python腳本抓出來的log使用chrome已經打不開了。

想着用用比較時髦的perfetto吧,發現無論如何也抓不到自定義的trace了,細看了一下,尼瑪perfetto挖的坑也挺深的。

perffeto UI使用起來邏輯大概是這樣的:

1、在界面上選取你想錄制對應的項目

2、在recording command里邊生成對應的perfetto命令腳本

3、點擊start recording,網頁就會啟動adb server幫你自動化錄制perfetto trace,然后pull出來到網頁上顯示

它的坑大概是這樣的:

1、由於它是網頁上啟動自己的adb server,如果你系統上已經啟動了其他的adb server,它就傻掉不work了。

2、看起來選擇所有的項目都是可以在recording command里邊生成對應的perffetto命令腳本的,但是對於Atrace這個選項並不生效。事實上即使你反復開關Atrace這個選項,腳本里邊也是巋然不動的。

對於問題1的解決,我這邊是由於android studio啟動的時候自己會啟動一個adb server,所以用perfetto的時候必須把as關閉它才能直接在perfetto ui上錄制,不然只能自己手動錄制。

對於問題2,查閱了它官方對於atrace的解釋之后,才發現把如下這塊手工加到腳本里邊才行:

data_sources {
  config {
    name: "linux.ftrace"
    ftrace_config {
      # Enables specific system events tags.
      atrace_categories: "am"
      atrace_categories: "pm"

      # Enables events for a specific app.
      atrace_apps: "com.google.android.apps.docs"

      # Enables all events for all apps.
      atrace_apps: "*"
    }
  }
}

總之就是使用界面里邊生成的腳本,手工加上atrace相關的代碼,組合制作一個config.pbtx文件,然后按照如下命令執行抓取trace:

cat config.pbtx | adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace.perfetto-trace

然后把

/data/misc/perfetto-traces/trace.perfetto-trace

pull出來手工送到網頁上顯示即可

 

具體靈活配置可以自行查閱官方文檔:

https://perfetto.dev/docs/quickstart/android-tracing


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM