You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
合作与生态
支持与服务
开发者
了解我们
导航

卡顿分析-iOS

更新时间:2022.10.14 15:20:31

卡顿分析支持自定义卡顿场景分析,支持收集线程快照与CPU使用率,在火焰图展示各个线程的函数执行情况,并允许数据分享。

目标

  • 保留卡顿现场,及时分析卡顿原因
  • 直观展示卡顿场景函数执行情况
  • 竞品分析

使用流程

  1. 连接手机
  2. 开启测试
  3. 配置环境
  4. 数据采集
  5. 手动停止
  6. 符号化堆栈
  7. 数据展示

功能介绍

卡顿分析支持iOS的以下功能:

区域
功能
工具栏开始 & 结束测试
切换多个测试数据
堆栈搜索
数据分享
范围指示器切换时间范围
图形区各线程CPU使用率
线程状态时序(需开启线程状态采集)
各线程函数调用火焰图
表格区CPU使用率详细数据
线程状态详细数据
函数调用树状图
辅助工具区采集配置 & 符号化配置
自定义数据范围
线程筛选

数据采集

单击启动开始采集数据,需进入短暂的环境配置流程,配置完成后自动采集,既当看到以下界面时数据开启了采集。

  • 由于数据量较大,且需要符号化才能有效消费,故采集完成后统一展现
  • 右侧辅助工具区可配置是否采集线程线程状态(开启后数据量会增大)

    手动单击停止按钮停止采集,默认最大采集时长10min。

    如果测试时间过短或者App中开启了反调试将会提示以下信息:

符号化堆栈

以上采集的数据大部分为堆栈,需要符号化后才可消费。

  • 自动匹配到dSym文件,直接单击符号化。
    • 自动匹配能力需测试debug包或者用14.6以上系统测试任意包。
    • Debug包本地编译请先确认编译选项开启dSYM文件生成,target->Build Settings->Debug Information Format->DWARF with dSYM File,编译后dSYM文件路径在Products目录下(与.app同级目录)。
  • 未自动匹配dSym文件,手动选择dsym文件路径并进行符号化。
  • 右侧辅助工具区配置符号化选项。
    • 默认只符号化App的堆栈,系统堆栈的符号化需单独开启。
      功能适用规则和以上自动匹配到dSym文件规则一致,将使用xcode中device surpport中的framework进行符号化,如若没有指定系统的device surpport,也是无法符号化系统堆栈
    • 默认未符号化的数据不会展示,可配置展示所有数据,为符号化数据将只是地址及lib名称。

数据展示

工具栏

  • 函数搜索,支持正则匹配,由于搜索数据量较大,需输入关键词后按下回车才进行搜索
  • 搜索词以左侧标签展示,单击标签取消搜索
  • 左右切换搜索结果,可快速选中对应函数
  • 火焰图中未匹配函数置灰,匹配函数高亮
  • 树状图中匹配词高亮
  • 线程筛选中未匹配线程划线标识

范围指示器

  • 悬浮上面可见对应时刻的CPU使用率
  • 框选指定区间可将图&表区数据缩放到指定区间
  • 双击还原成默认区间

图形区

  • 默认展示CPU使用率,悬浮可见具体值,单击可展示对应数据在表格区的位置。
  • 开启配置后可展示线程状态时序,悬浮可见具体状态与耗时,单击可展示对应数据在表格区的位置。
  • 线程火焰图(火焰向下生长即为函数调用关系)
    • 可单独折叠展开
    • 火焰图区间内可通过触摸板手势拖动&缩放、Ctrl+滚轮进行缩放、快捷键WASD缩放与移动
    • 悬浮可见具体函数与耗时
    • 单击可展示对应数据在表格区的位置,并展开对应调用栈

说明

多个火焰图同时展示或火焰图过于复杂,可能导致界面交互卡顿,建议分多次测试,减少单次测试时长。

表格区

  • CPU与线程状态的详细数据,可进行数据排序
  • 函数调用树状图
    • Self Time 该函数本身执行耗时,不包含子函数耗时情况,用于区分慢函数的卡顿原因,百分比为测试区间占比
    • Total Time 该函数的整体耗时,百分比为测试区间占比
    • Times 该函数在同一调用层级的出现次数,用于排查低消耗高频卡顿场景
    • Functions 函数名称 & 所在的lib名称,可展开子函数的调用
    • 聚类规则(可通过下文介绍的面包屑切换)
      • Call Tree 既正常函数调用关系
      • Bottom up 反转调用栈,用户聚类底层调用,排查低消耗高频卡顿场景
  • 表格区包含以上3中数据,可通过面包屑切换
  • 表格上方的面包屑 (线程信息 > 数据类型 > 辅助选项)
  • 切换数据除了上文中提及的单击指定图形区外,还可通过面板屑中的数据类型切换

辅助工具区

  • 自定义范围

    • 以函数为定位的范围截取,比手动框选更精准
    • 通过选中火焰中对应函数,单击自定义范围表格中的“+”号,选择函数的开始或结束作为指定范围的开始与结束(可修改标识点名称)
    • 单击对应区间,将自动缩放到指定区间(双击范围指示器可还原至完整区间)
  • 线程过滤,可手动勾选所关注的线程,图&表区只展示所勾选的线程