用途:在不打开 Instruments 的情况下,通过命令行录制 Time Profiler、提取样本、符号化并列出性能热点。
主要能力:使用 xctrace 录制 Time Profiler 轨迹;从轨迹导出时间样本 XML;结合运行时的 __TEXT 加载地址进行符号化,排序应用帧热点。技能内含三个脚本:record_time_profiler.sh(通过 attach 或 launch 录制)、extract_time_samples.py(从轨迹导出 time-sample XML)、top_hotspots.py(符号化并排序顶部应用帧)。
必要用法:录制(attach)先自行启动应用,再执行:xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --attach <pid>。录制(launch):xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --launch -- /path/App.app/Contents/MacOS/App。提取样本:scripts/extract_time_samples.py --trace /tmp/App.trace --output /tmp/time-sample.xml。获取符号化加载地址(应用运行中):vmmap <pid> | rg -m1 "__TEXT" -n。符号化并排序热点:scripts/top_hotspots.py --samples /tmp/time-sample.xml --binary /path/App.app/Contents/MacOS/App --load-address 0x100000000 --top 30。
流程注意:确认分析的是正确二进制(本地构建还是 /Applications),--launch 优先用直接二进制路径;捕获期间要触发慢路径(如菜单开合、刷新);栈为空可延长捕获或避开空闲段;xcrun xctrace help record 和 xcrun xctrace help export 可查看正确标志。
限制与坑点:ASLR 意味着必须用 vmmap 中运行时的 __TEXT 加载地址;换用新构建需更新 --binary 路径,符号要与轨迹匹配;若通过 atos 符号化则无需打开 Instruments。资料未提供收费、价格与支持的平台信息。