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
-
打开网站 https://ui.perfetto.dev/
-
把抓取到的trace拖到网站中
-
如果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
抓取方法
- 把需要抓取backtrace的应用打开。比如,应用卡主的问题、游戏卡在黑屏的问题等,就把应用打开在卡主的界面。
- 找到应用pid
adb shell ps -A | grep [应用包名]
- 通过pid抓取backtrace
adb shell debuggerd [应用pid] > backtrace.txt
重定向到backtrace.txt文件
查看backtrace
我们主要关注抓取到的文件中的backtrace部分。这里我们的backtrace抓的是一个卡在黑屏的应用(com.xd.ro.roapk),这里可以看到应用卡在了 Vulkan 图形渲染。
火焰图
前置条件
- 需要下载Android NDK
- 手机需要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文件拖动到这个网站即可。
加载完成后,可以选择火焰图或者栈图,可以帮助我们查看对应的堆栈信息。