SuperAPI AI 工具集

axiom-hang-diagnostics

通用与其它

查看项目

更新于 10-15 20:11

技能介绍

用途:系统化诊断与解决应用卡顿。卡顿指主运行循环超过 1 秒无法处理事件,用户点击无反应。适用于应用短暂冻结、UI 不响应触摸、出现“应用未响应”系统弹窗、Xcode Organizer 显示卡顿诊断、收到 MetricKit MXHangDiagnostic 等场景;动画掉帧可能属于 hitch,应用变慢但仍可响应则属于性能问题而非卡顿。

主要能力:区分卡顿、hitch 与 lag;将卡顿归因于两类根因——主线程繁忙(主动计算、无关工作、次优 API)与主线程阻塞(同步 IPC、文件 I/O、网络、锁竞争、信号量或 dispatch_sync)。提供决策树:有 Organizer 或 MetricKit 诊断时查看堆栈,区分“运行中”与“等待中”;可复现时先用 Time Profiler,怀疑阻塞时用 System Trace。

使用方式:在 Instruments 中选择 Time Profiler 或 System Trace 模板,录制并复现卡顿,选中冻结时间段,检查主线程调用树或线程状态(运行、被抢占、阻塞)。在 Xcode 中通过 Window > Organizer > 选择应用 > Hangs 查看聚合报告,关注卡顿率、调用栈与设备/系统分布。可接入 MetricKit,实现 MXMetricManagerSubscriber 的 didReceive(_:) 处理 hangDiagnostics,读取 hangDuration、callStackTree、signatureIdentifier。

常见修复模式:将 Data(contentsOf:) 等文件读取移到后台;过滤通知观察者;缓存 DateFormatter 等格式化器;避免从后台线程调用 DispatchQueue.main.sync;用 async/await 替代信号量等待;用 actor 替代共享锁;精简启动工作以规避看门狗;图像处理放到后台。

限制:看门狗在模拟器、附加调试器及部分开发构建中禁用,因此本地可能无法复现;看门狗终止会记录为 EXC_CRASH (SIGKILL),终止原因命名空间 RUNNINGBOARD、代码 3735883980。具体阈值与 API 行为以官方文档为准,资料未提供收费、价格或平台支持信息。