Android systrace/atrace/ftrace抓取方法

systrace

预装python(python版本是2.7否则无法抓取)
python2.7安装地址:
https://www.python.org/download/releases/2.7/
安装pywin32依赖:
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/
安装six 依赖:
https://pypi.org/project/six/#files
six 安装方法:
下载six-1.15.0.tar.gz 解压到任意目录,在setup.py文件夹下执行python setup.py install

进入SDK目录下的systrace目录。如(adt-bundle-windows-x86_64-20140702\sdk\platform-tools\systrace)
userdebug版本:

python systrace.py am wm view app res ss gfx  view hal bionic pm sched irq freq idle disk mmc load sync workq binder_driver binder_lock pagecache memreclaim dalvik input -t 5 -o systrace.html 

user版本:

python systrace.py am wm view app res ss database freq sched gfx input idle binder_driver binder_lock dalvik -t 5 -o systrace.html 

Options可选值

atrace

当系统需要解决深度睡眠或者某些在不连接usb才能复现的问题时,可以使用如下方法来获取systrace(必须是user+root或者userdebug版本)
1、adb root && adb remount
2、进入adb shell 输入如下命令

atrace -z -b 40000 am wm view app res ss gfx  view hal bionic pm sched irq freq idle disk mmc load sync workq binder_driver binder_lock pagecache memreclaim dalvik input -t 15 > /data/local/tmp/trace_output &

然后可以拔掉usb来复现问题。
3、转换systrace

Python systrace.py --from-file trace_output -o output.html

在androidQ或者更高版本上可以使用自带perfetto工具来抓取systrace:
开发者选项->系统跟踪->录制跟踪记录
抓取文件保存在data/local/trace中,可以用网页https://ui.perfetto.dev/#!/viewer
点击open with legacy UI选项打开。

ftrace

#! /bin/sh
echo 0 > /d/tracing/tracing_on
echo 16384 > /d/tracing/buffer_size_kb //这里设置大概抓取5s左右的buffer
echo > /d/tracing/trace
echo task_newtask task_rename ipi_raise ipi_entry ipi_exit irq_handler_entry irq_handler_exit softirq_entry softirq_exit softirq_raise workqueue_execute_start workqueue_execute_end sched_waking sched_wakeup sched_wakeup_new sched_switch sched_migrate_task sched_process_exit sched_blocked_reason cpu_idle cpu_frequency cpu_frequency_limits > /d/tracing/set_event

echo 1 > /d/tracing/tracing_on

复现问题或需要关闭trace时,调用代码

trace_printk("timeout, stop ftrace\n");
tracing_off();

关闭trace

确定问题已经复现:
adb shell
cat /d/tracing/tracing_on -->如果结果是0则继续执行下面的命令,为1代表没有复现该问题,需要继续等待。
cat /d/tracing/trace > /sdcard/ftrace.log
之后adb pull出来该ftrace log文件。可以用chrome浏览器直接load该文件

参考:
https://developer.android.google.cn/topic/performance/tracing

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值