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

posted @ 2021-11-24 18:50  长尾景虎  阅读(3737)  评论(0编辑  收藏  举报