daPerfetto UIcsdn真JB难用
官网地址:
使用方式:
方式1:
通过网页录制:
但是有时候会有问题, 提示adb kill-server ,但是依旧没有反应,可以重新打开新的网站。但不保证能解决问题。
在录制开始前应该先进行合理的配置:
配置参考如下:
最后是重点,不然看不到系统相关的trace信息
搞定后就可以开始干活了!自动录制完成后会自动打开展示在网页上,如果stop按钮一直在执行,但是没有进度展示,那就是有问题的。
方式2:通过终端执行
配置参考上图,
配置好后会得到这样的一个命令参数
直接复制到终端执行即可。
执行完会自动停止,提示路径。
adb pull /data/misc/perfetto-traces/trace ./
将当前目录下的trace文件 pull出来 用perfetto工具打开即可。
较为完整的命令可参考下面的:
adb shell perfetto \
-c - --txt \
-o /data/misc/perfetto-traces/mytrace \
<<EOF
buffers: {
size_kb: 522240
fill_policy: DISCARD
}
buffers: {
size_kb: 2048
fill_policy: DISCARD
}
data_sources: {
config {
name: "android.packages_list"
target_buffer: 1
}
}
data_sources: {
config {
name: "linux.process_stats"
target_buffer: 1
process_stats_config {
scan_all_processes_on_start: true
proc_stats_poll_ms: 1000
}
}
}
data_sources: {
config {
name: "android.log"
android_log_config {
}
}
}
data_sources: {
config {
name: "android.surfaceflinger.frametimeline"
}
}
data_sources: {
config {
name: "linux.sys_stats"
sys_stats_config {
meminfo_period_ms: 1000
cpufreq_period_ms: 1000
}
}
}
data_sources: {
config {
name: "android.java_hprof"
target_buffer: 0
java_hprof_config {
continuous_dump_config {
dump_interval_ms: 10000
}
}
}
}
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "sched/sched_switch"
ftrace_events: "power/suspend_resume"
ftrace_events: "sched/sched_wakeup"
ftrace_events: "sched/sched_wakeup_new"
ftrace_events: "sched/sched_waking"
ftrace_events: "power/cpu_frequency"
ftrace_events: "power/cpu_idle"
ftrace_events: "raw_syscalls/sys_enter"
ftrace_events: "raw_syscalls/sys_exit"
ftrace_events: "sched/sched_process_exit"
ftrace_events: "sched/sched_process_free"
ftrace_events: "task/task_newtask"
ftrace_events: "task/task_rename"
ftrace_events: "lowmemorykiller/lowmemory_kill"
ftrace_events: "oom/oom_score_adj_update"
ftrace_events: "ftrace/print"
atrace_categories: "am"
atrace_categories: "adb"
atrace_categories: "aidl"
atrace_categories: "dalvik"
atrace_categories: "audio"
atrace_categories: "binder_lock"
atrace_categories: "binder_driver"
atrace_categories: "bionic"
atrace_categories: "camera"
atrace_categories: "database"
atrace_categories: "gfx"
atrace_categories: "hal"
atrace_categories: "input"
atrace_categories: "network"
atrace_categories: "nnapi"
atrace_categories: "pm"
atrace_categories: "power"
atrace_categories: "rs"
atrace_categories: "res"
atrace_categories: "rro"
atrace_categories: "sm"
atrace_categories: "ss"
atrace_categories: "vibrator"
atrace_categories: "video"
atrace_categories: "view"
atrace_categories: "webview"
atrace_categories: "wm"
atrace_apps: "*"
}
}
}
duration_ms: 15000
EOF
上述的demo抓取出来的日志如上图所示。
方法3:将配置保存为文件,执行脚本抓取。和上面大同小异。
my_test.config
buffers: {
size_kb: 522240
fill_policy: DISCARD
}
buffers: {
size_kb: 2048
fill_policy: DISCARD
}
data_sources: {
config {
name: "android.packages_list"
target_buffer: 1
}
}
data_sources: {
config {
name: "linux.process_stats"
target_buffer: 1
process_stats_config {
scan_all_processes_on_start: true
proc_stats_poll_ms: 1000
}
}
}
data_sources: {
config {
name: "android.log"
android_log_config {
}
}
}
data_sources: {
config {
name: "android.surfaceflinger.frametimeline"
}
}
data_sources: {
config {
name: "linux.sys_stats"
sys_stats_config {
meminfo_period_ms: 1000
cpufreq_period_ms: 1000
}
}
}
data_sources: {
config {
name: "android.java_hprof"
target_buffer: 0
java_hprof_config {
continuous_dump_config {
dump_interval_ms: 10000
}
}
}
}
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "sched/sched_switch"
ftrace_events: "power/suspend_resume"
ftrace_events: "sched/sched_wakeup"
ftrace_events: "sched/sched_wakeup_new"
ftrace_events: "sched/sched_waking"
ftrace_events: "power/cpu_frequency"
ftrace_events: "power/cpu_idle"
ftrace_events: "raw_syscalls/sys_enter"
ftrace_events: "raw_syscalls/sys_exit"
ftrace_events: "sched/sched_process_exit"
ftrace_events: "sched/sched_process_free"
ftrace_events: "task/task_newtask"
ftrace_events: "task/task_rename"
ftrace_events: "lowmemorykiller/lowmemory_kill"
ftrace_events: "oom/oom_score_adj_update"
ftrace_events: "ftrace/print"
atrace_categories: "am"
atrace_categories: "adb"
atrace_categories: "aidl"
atrace_categories: "dalvik"
atrace_categories: "audio"
atrace_categories: "binder_lock"
atrace_categories: "binder_driver"
atrace_categories: "bionic"
atrace_categories: "camera"
atrace_categories: "database"
atrace_categories: "gfx"
atrace_categories: "hal"
atrace_categories: "input"
atrace_categories: "network"
atrace_categories: "nnapi"
atrace_categories: "pm"
atrace_categories: "power"
atrace_categories: "rs"
atrace_categories: "res"
atrace_categories: "rro"
atrace_categories: "sm"
atrace_categories: "ss"
atrace_categories: "vibrator"
atrace_categories: "video"
atrace_categories: "view"
atrace_categories: "webview"
atrace_categories: "wm"
atrace_apps: "*"
}
}
}
duration_ms: 15000
1. 编辑配置文件并保存。可以看到配置文件实质上就是从Perfetto 的 Recording command复制出来去掉了开头和结尾部分。
2. adb push my_test.config /data/local/tmp/my_test.config
3. adb shell "cat /data/local/tmp/my_test.config | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace"
4. adb pull /data/misc/perfetto-traces/trace.perfetto-trace ./
5.Perfetto UI 工具打开
6. 手机上开发者选项---》系统跟踪--》显示"快捷设置"图块,打开后,下拉菜单会出现一个小虫子图标。点击小虫子图标就可以开始抓取日志了,再次点击停止抓取日志,长按图标回到系统跟踪界面。
可以设置类别
跟踪文件可以分享或者保存到本地,pull出来后使用perfetto工具查看。
下一篇文章讲下分析技巧!