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_eventecho 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

Android systrace/atrace/ftrace抓取方法相关推荐

  1. 360n5s不打印日志 不同厂商手机系统日志抓取方法

    调试android程序,当使用真机时system.out,log.i等日志在logcat里面打印不出来(但能打印出来其他一堆系统消息),而使用模拟机一切正常,怎样才能在真机调试时也能在logcat打印 ...

  2. 域格9x07模块问题日志抓取方法

    域格9x07平台模块排查问题步骤流程:可先提供AT交互日志进行简单筛选排查:如还有问题,再提供高通工具QXDM抓取QXDM日志进行比对分析:特殊异常可抓取特定日志.相关模块的问题及抓取判断方法已简略列 ...

  3. Android 7.0解决抓取不到https请求的问题

    Android 7.0解决抓取不到https请求的问题 参考文章: (1)Android 7.0解决抓取不到https请求的问题 (2)https://www.cnblogs.com/meitian/ ...

  4. SAP 采购订单税金抓取方法

    SAP 采购订单税金抓取方法: 一.找表字段: 1.在EKKO表里找到采购订单的单据条件号:EKKO-KNUMV 2.在KONV条件(事务数据)表内找到单据条件号:KONV-KNUMV 行项目号:KO ...

  5. SAP-采购订单交货成本抓取方法

    SAP 采购订单税金抓取方法: 一.找表字段: 1.在EKKO表里找到采购订单的单据条件号:EKKO-KNUMV 2.在KONV条件(事务数据)表内找到单据条件号:KONV-KNUMV         ...

  6. ajax获取网页新闻,基于Ajax的新闻网页动态数据的抓取方法及系统

    主权项: 1.基于Ajax的新闻网页动态数据的抓取方法,其特征是,包括如下步骤:步骤(101):建立新闻网页爬取内容数据库,设置新闻网页爬取内容数据库的编码方式:获得待抓取新闻网页的新闻列表页面的UR ...

  7. 网页怎么算切屏_十种切屏抓取方法(图形)

    屏幕截取招招看!教你十种屏幕抓取方法(图形) 说起屏幕截图,相信大家都不会陌生:随意翻翻每期的<电 脑报> ,哪篇不是图文并茂 ? 但是对于刚刚接触电脑的朋友来说, 对如何进行抓图还摸不着 ...

  8. android log抓取方法,Android系统之Android抓取各种log的方法

    Android系统之Android抓取各种log的方法 2018年11月25日 | 萬仟网移动技术 | 我要评论 android之android抓取各种log的方法 1.logcat (四类log b ...

  9. android socket通信如何抓取,安卓Socket通信实例(客户端、服务端)

    安卓Socket通信实例 本文摘自:https://whatsblog.icu/index.php/Android/17.html 1.Socket通信必须知道的地方 1.首先,Socket通信采用T ...

最新文章

  1. android sdk 安装_Appium+python自动化1-环境安装(上)
  2. linux系统支持u盘格式,linux下U盘格式化
  3. authinfo.php,【nginxphp】后台权限认证方式
  4. jQuery插件开发全解析(转)
  5. 78oa mysql_78OA系统安装后无法打开解决方案
  6. 计算机视觉基本研究方向
  7. 51CTO网友感谢信:昨天以940分的成绩顺利通过NE考试 在此特地感谢网工泡泡
  8. 宽带路由器-mac地址克隆
  9. Unlocker v4.1.3 VMware 虚拟机 MacOS 系统解锁工具
  10. java基础之API(String)
  11. 对计算机硬盘进行格式化时,在安装操作系统之前,如何对硬盘进行分区和格式化(新手必看)...
  12. 第七届“泰迪杯”——个人总结吧
  13. 洛谷p5710答案C语言,洛谷题单 101【入门2】分支结构
  14. “互联网+政务”是什么?
  15. git is outside repository
  16. PR(precision recall curve)曲线是什么?PR曲线如何绘制?为什么Precision和Recall是矛盾体、此消彼长?为什么提出F1指标?
  17. (UVA1395)Slim Span(A)
  18. LearnOpenGL-CN笔记(一)
  19. 九度oj 题目1080:进制转换
  20. JavaWeb:request.setAttribute()和session.setAttribute()的区别

热门文章

  1. 牛顿迭代法实现平方根函数sqrt
  2. 来写一个讨人厌牛皮癣的广告
  3. Unifier培训: 系列讲解26 : 项目级的业务流程--变更单(总承包商业务)
  4. z8350cpu linux,Intel 14nm Atom x5-Z8350 4核处理器+4GB RAM + 64 GB eMMC——最强单板计算机UP Board评测...
  5. MFC中如何将两个独立的程序合并为一个程序(障眼法)
  6. micro850通讯协议msg_PLC原理与应用 罗克韦尔 Micro800 系列
  7. cbc系统是指_制动力分配(EBD/CBC等)
  8. 信息系统项目文案学习,常见高级词汇整理记录
  9. oracle数据库的访问控制,数据库角色访问控制
  10. jQuery表单验证用户名密码