android trace、backtrace文件和火焰图的抓取与查看方法

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.com/,把生成的json.gz文件拖动到这个网站即可。

在这里插入图片描述加载完成后,可以选择火焰图或者栈图,可以帮助我们查看对应的堆栈信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值