1,打开debug模式
2,开发者模式里边,搜索trace,中文名称“系统跟踪”
3,如果需要录制跟踪,可以打开“录制跟踪记录”开关,此时操作机器就能记录下来所有的trace
4,关闭追踪可以在通知里边关闭
会通知你已经生成了trace文件。
5,使用adb把文件传输到电脑:adb pull /data/local/traces/ 你想保存到终端的文件夹名称/,比如:adb pull /data/local/traces/ traces/
PS C:\Users\xxxx> adb pull /data/local/traces/ traces/
/data/local/traces/: 1 file pulled, 0 skipped. 26.9 MB/s (9322379 bytes in 0.331s)
ps:导出ap和cp的ylog(打开ylog:展锐 拨号键盘*#*#8378#*#*)
adb pull /data/ylog/ cp/
adb pull /storage/emulated/0/ylog/ ap/
6,打开分析trace:浏览器打开网页 Perfetto UI ,选择你刚拷贝到本地的trace文件即可加载和展现trace
7,什么是trace:所有操作记录,线程和进程CPU,GPU渲染情况,是否有丢帧,延迟,阻塞等都一目了然,如:
图1,阻塞耗时 113ms
图2:渲染线程死亡
图3:launcher进程中多大阻塞时间723us
图5:Launcher有疯狂掉帧
8,过滤出来最耗时的几个线程:
SELECT t.name AS thread_name, s.name AS slice_name, s.dur / 1000000.0 AS duration_ms FROM slice s JOIN thread_track tt ON s.track_id = tt.id JOIN thread t USING (utid) WHERE s.dur > 50000000 -- 过滤出耗时大于 50ms 的方法 ORDER BY s.dur DESC LIMIT 10;9,trace使用场景:log里边没有明显的crash,OOM,ANR等报错,没有明确错误指向的时候。