Track down hangs with Xcode and on-device detection

用Xcode 和 on-device Detection 追踪 APP挂起
什么是hangs?

短时间无反应,大于250毫秒没反应。
主线程忙,或者主线程等待其他线程或系统资源, 导致APP反应慢。

检测挂起的新增时期

在iOS16和Xcode14以前,MetrickKit可以在beta App和public App阶段收集挂起率和诊断报告,Xcode Organizer可以在public App阶段提供挂起的统计数据。

在iOS16和Xcode14以后,在APP开发、beta测试和已发布时期都可以获取挂起信息。

  1. 在开发阶阶段Xcode新增Thread Performance Checker功能,Instrument工具的Time Profiler新增hangs信息
  2. 在beta测试阶段可以使用测试机的 On-Device Hang Detection
  3. 在APP发布时期,Xcode Orgainer 新增了hangs 数据项目,可以查看线上APP hangs数据,


在不同时期应用挂起检测
1.APP开发调试阶段
  1. 开启Thread Performance Checke功能
    在 Edit schema -> Run -> Diagnostics 选项中开启 Thread Performance Checker


调试APP期间,当执行的代码优先级不对的时候,即出现主线程等待子线问题时,会在Xcode问题导航器中通知出现挂起问题




2.如果挂起时想知道其他线程在干什么,需要知道栈调用信息,可以使用Instrument的Timer Profiler, 出现挂起时Timer Profiler 会检测到Hangs并提供调用信息,三击检测项会出现不同线程CPU的使用情况



此外Instrument还单独提供了Hang tracing工具,可以为检测和标记hangs配置一个hang阈值,检测是否存在hang行为
2.beta版阶段

可以在开发设备被打开 Hang Detection功能,打开位置 Settings -> Developer -> Hang Detection


此处可以设置挂起阈值为250ms、500ms、1000ms、2000ms不同的值,出现hang时APP内会有实时的弹框提示,Hang Detection中也会保留hang日志。


3.APP发布时期

Xcode Organizer支持hang报告和诊断数据,每条hang数据会包含执行函数名、挂起时间、不同手机和系统版本的统计信息


在 App Stroe Connect Rest APIS 也可以获取hangs报告信息。

参考:
https://developer.apple.com/videos/play/wwdc2021/10258
https://developer.apple.com/videos/play/wwdc2022/10082/

你可能感兴趣的:(Track down hangs with Xcode and on-device detection)