用途:在命令行下对原生 macOS/iOS 应用做 CPU 性能剖析,定位性能热点、分析 CPU 占用、诊断缓慢代码,无需打开 Instruments。
主要能力:用 xctrace 录制 Time Profiler 采样;导出 time-profile 数据为 XML;用 vmmap 获取 __TEXT 段加载地址;用 atos 对堆栈帧做符号化;通过 --toc 查看 trace 中的 schema;还支持 Attach 已运行进程或启动应用并录制。除 Time Profiler 外,共用模板还包括 Allocations、Leaks、System Trace、Animation Hitches,可用 xcrun xctrace list templates 查看。
用法要点:先用 pgrep -x "AppName" 获取 PID,再用 xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --attach 附加录制,或用 --launch -- 路径启动并录制;导出数据用 xcrun xctrace export --input /tmp/App.trace --xpath '/trace-toc/run/data/table[@schema="time-profile"]' --output /tmp/time-profile.xml;符号化前用 vmmap <pid> | grep "__TEXT" 取加载地址,再执行 atos -o 二进制 -l 加载地址 地址。iOS 模拟器可用 --device <simulator-udid>,UDID 通过 xcrun simctl list devices | grep Booted 获取。
适用场景:需要 CLI/自动化录制剖析、排查慢路径、分析调用树热点(高 self-time 函数、深层调用栈)。
限制:ASLR 使运行时加载地址每次启动不同;符号必须与被剖析的构建版本一致;剖析空闲应用会得到空数据;部分操作可能需要 sudo;如堆栈为空应延长录制时间。具体效果未提供。