当前位置:   article > 正文

perfetto命令 抓取 trace_perfetto抓取trace

perfetto抓取trace

1.启动Android 模拟器

进入到 cmd 中,敲入下面的命令

H:
cd H:\Sdk\emulator
.\emulator.exe -list-avds
.\emulator.exe -writable-system -avd Pixel_XL_API_32_6  -no-snapshot-load -qemu
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

2.再打开一个 CMD 窗口,设置 traced 权限

adb shell setprop persist.traced.enable 1
  • 1

在这里插入图片描述

3.验证是否打开 traced 权限

adb shell
getprop persist.traced.enable
ps -A|grep -i trace
  • 1
  • 2
  • 3

在这里插入图片描述

4. 输入 perfetto 命令

adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 10s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
  • 1

其中 -o /data/misc/perfetto-traces/trace_file.perfetto-trace 意思就是说 将 trace 保存到手机的 /data/misc/perfetto-traces/ 路径下,且文件名为 trace_file.perfetto-trace
-t 10s 意思就是抓取 10 秒

点击照相APP,操作几下, 10秒后会自动停止抓取
在这里插入图片描述

在这里插入图片描述

5. 将 trace 从手机拷贝到电脑

adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace
  • 1

在这里插入图片描述

在哪个路径执行的 上面的命令,文件就会被保存到哪里
可以看到拷贝好的 trace 文件

在这里插入图片描述

6. 在浏览器打开这个网址

https://ui.perfetto.dev/
  • 1

在这里插入图片描述

然后把 trace 文件拖进来

在这里插入图片描述

7. 在 app 代码中封装一个 Trace 类

这里 GeekCamera2Trace 类是直接调用 Android 系统的 Trace 类的各种函数

package com.deepinout.geekcamera;

import android.os.Build;
import android.os.Trace;

public class GeekCamera2Trace {
   ...
    public static void beginAsyncSection(String methodName, int cookie) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && Trace.isEnabled()) {
            Trace.beginAsyncSection(methodName, cookie);
        }
    }

    public static void endAsyncSection(String methodName, int cookie) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && Trace.isEnabled()) {
            Trace.endAsyncSection(methodName, cookie);
        }
    }

    public static void beginSection(String sectionName) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q &&Trace.isEnabled()) {
            Trace.beginSection(sectionName);
        }
    }

    public static void endSection() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q &&Trace.isEnabled()) {
            Trace.endSection();
        }
    }

    public static void setCounter(String counterName, long counterValue) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q &&Trace.isEnabled()) {
            Trace.setCounter(counterName, counterValue);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

8. 在 app 的 openCamera 的代码前后分别加 Trace

在这里插入图片描述

9. 编译运行 app

在这里插入图片描述

10. 制作 config 文件

打开下面的网址

https://ui.perfetto.dev/
  • 1

在这里插入图片描述

选取下面的选项
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

选好以后,复制下面的内容到一个文件

在这里插入图片描述

buffers: {
    size_kb: 63488
    fill_policy: DISCARD
}
buffers: {
    size_kb: 2048
    fill_policy: DISCARD
}
data_sources: {
    config {
        name: "android.gpu.memory"
    }
}
data_sources: {
    config {
        name: "linux.process_stats"
        target_buffer: 1
        process_stats_config {
            scan_all_processes_on_start: true
        }
    }
}
data_sources: {
    config {
        name: "linux.sys_stats"
        sys_stats_config {
            meminfo_period_ms: 1000
            meminfo_counters: MEMINFO_MEM_FREE
            meminfo_counters: MEMINFO_MEM_TOTAL
            meminfo_counters: MEMINFO_SWAP_FREE
            meminfo_counters: MEMINFO_SWAP_TOTAL
            stat_period_ms: 1000
            stat_counters: STAT_CPU_TIMES
            stat_counters: STAT_FORK_COUNT
            cpufreq_period_ms: 1000
        }
    }
}
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: "power/gpu_frequency"
            ftrace_events: "gpu_mem/gpu_mem_total"
            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: "camera"
            atrace_categories: "gfx"
            atrace_categories: "hal"
            atrace_categories: "input"
            atrace_categories: "ss"
            atrace_categories: "view"
            atrace_categories: "wm"
            atrace_apps: "*"
        }
    }
}
duration_ms: 10000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70

改成自己的 app 的名字

在这里插入图片描述

我保存到了 H:\Sdk\emulator 下面,文件名字叫做 record_camera.config
(大家可以按照自己的喜好选择路径和设置文件名字)

在这里插入图片描述

在 cmd 或者 Android Studio 的 Terminal 中输入下面的命令

adb push record_camera.config /data/local/tmp/record_camera.config
adb shell “cat /data/local/tmp/record_camera.config | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace”
  • 1
  • 2

报错:
在这里插入图片描述
解决办法:

在这里插入图片描述

保存
重新 Push 到模拟器
重复执行上面两行命令

adb push record_camera.config /data/local/tmp/record_camera.config
adb shell “cat /data/local/tmp/record_camera.config | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace”
  • 1
  • 2

在这里插入图片描述
可以看到可以运行正常
点开 app ,然后点击拍照

在这里插入图片描述

这样就抓取好了 trace
拷贝trace 到电脑

adb pull /data/misc/perfetto-traces/trace.perfetto-trace
  • 1

在这里插入图片描述

可以看到抓取的 trace 文件
在这里插入图片描述

将这个文件拖到网页

https://ui.perfetto.dev/
  • 1

在这里插入图片描述

搜索 GC2_App_openCamera

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/122700
推荐阅读
相关标签
  

闽ICP备14008679号