admin 管理员组

文章数量: 887021

trace

抓取方法

解压android trace抓取相关文件
找到config.pbtx文件,连接手机push进去

# push config.pbtx ,/data/local/tmp/为自定义push到的目录
adb push config.pbtx /data/local/tmp/
adb shell 
# 抓取trace, /data/local/tmp/perfetto-traces/为自定义输出目录
cat /data/local/tmp/config.pbtx | perfetto --txt -c - -o /data/local/tmp/perfetto-traces/trace.perfetto-trace
# 抓到后你所需要的内容后 ctrl+c中断,导出trace文件
adb pull /data/local/tmp/perfetto-traces/trace.perfetto-trace

查看trace

  1. 打开网站 https://ui.perfetto.dev/

  2. 把抓取到的trace拖到网站中

  3. 如果trace文件过大则会有以下提示

    这时可以使用按上述命令操作

    # 下载trace_processor
    curl -LO https://get.perfetto.dev/trace_processor
    # 添加权限
    chmod +x ./trace_processor
    # 运行trace_processor /path/to/trace.pftrace为文件路径
    trace_processor --httpd /path/to/trace.pftrace
    

    运行完成后,再将文件拖到网站 https://ui.perfetto.dev/,即可正常打开。

    或者直接使用压缩文件android trace文件的抓取与查看方法中的trace_processor_shell

    chmod +x ./trace_processor_shell
    ./trace_processor_shell --full-sort -D 【文件路径】
    

    加载完成后,打开网站 https://ui.perfetto.dev/,如下图选择选项

backtrace

抓取方法

  1. 把需要抓取backtrace的应用打开。比如,应用卡主的问题、游戏卡在黑屏的问题等,就把应用打开在卡主的界面。
  2. 找到应用pid
    adb shell ps -A | grep [应用包名]
  3. 通过pid抓取backtrace
    adb shell debuggerd [应用pid] > backtrace.txt
    重定向到backtrace.txt文件

查看backtrace

我们主要关注抓取到的文件中的backtrace部分。这里我们的backtrace抓的是一个卡在黑屏的应用(com.xd.ro.roapk),这里可以看到应用卡在了 Vulkan 图形渲染。

火焰图

前置条件

  1. 需要下载Android NDK
  2. 手机需要root

抓取方法

运行以下命令

adb shell
# /data/local/tmp/perf.data为自定义生成的文件路径
simpleperf record -o /data/local/tmp/perf.data -e task-clock:u -f 1000 -g --duration 1200 --log info --app  [应用包名]
# 复现后ctrl+c停止抓取命令的运行
# 导出文件
adb pull /data/local/tmp/perf.data

查看火焰图

在NDK目录下,如: /Android/Sdk/ndk/26.1.10909125/simpleperf 下执行命令:
./gecko_profile_generator.py -i perf.data | gzip > perf_data.json.gz
打开网站https://profiler.firefox/,把生成的json.gz文件拖动到这个网站即可。

加载完成后,可以选择火焰图或者栈图,可以帮助我们查看对应的堆栈信息。

本文标签: 火焰 文件 方法 Android Trace