systrace
预装python(python版本是2.7否则无法抓取)
python2.7安装地址:
www.python.org/download/re…
安装pywin32依赖:
sourceforge.net/projects/py…
安装six 依赖:
pypi.org/project/six…
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中,可以用网页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该文件