Instruments Profiling技能使用说明
2026-04-01
新闻来源:网淘吧
围观:18
电脑广告
手机广告
Instruments性能分析 (macOS/iOS)
当用户需要对原生应用进行性能分析或堆栈分析时使用此技能。
侧重点:时间性能分析器、xctrace命令行界面,以及选择正确的二进制文件/应用实例。
快速开始 (命令行界面)
- 列出模板:
xcrun xctrace list templates - 记录时间性能分析器 (启动应用):
xcrun xctrace record --template 'Time Profiler' --time-limit 60s --output /tmp/App.trace --launch -- /path/To/App.app
- 记录时间性能分析器 (附加到进程):
- 先自行启动应用,获取进程ID,然后执行:
xcrun xctrace record --template 'Time Profiler' --time-limit 60s --output /tmp/App.trace --attach <pid>
- 在Instruments中打开追踪文件:
open -a Instruments /tmp/App.trace
注意:xcrun xctrace --help不是有效的子命令。请使用xcrun xctrace help record。

选择正确的二进制文件(关键)
注意:如果LaunchServices解析到不同的应用包,性能分析工具可能会分析错误的应用(例如,位于/Applications目录中的其他应用)。请遵循以下规则:
- 为确定性启动,优先使用直接二进制路径:
xcrun xctrace record ... --launch -- /path/App.app/Contents/MacOS/App
- 如果启动的是
.app应用包,请确保是目标应用包:open -n /path/App.app- 使用以下命令验证:
ps -p <pid> -o comm= -o command=
- 如果同时存在
/Applications/App.app和本地构建版本,请明确指定本地构建路径。 - 启动后,在信任分析数据前请确认进程路径。
命令参数(xctrace)
--template 'Time Profiler':模板名称来自xctrace list templates.--launch -- <cmd>: 之后的所有内容--为目标命令(二进制文件或应用包)。--attach <pid|name>: 附加到正在运行的进程。--output <路径>:.trace输出。如果省略,文件将保存在当前工作目录。--time-limit 60s|5m: 设置捕获时长。--device <名称|UDID>: 在iOS设备上运行时必需。--target-stdout -: 将启动进程的标准输出流传输到终端(对命令行工具很有用)。
导出调用栈(命令行界面)
- 检查跟踪表:
xcrun xctrace export --input /tmp/App.trace --toc
- 导出原始时间性能分析样本:
xcrun xctrace export --input /tmp/App.trace --xpath '/trace-toc/run[@number="1"]/data/table[@schema="time-profile"]' --output /tmp/time-profile.xml
- 在脚本(Python/Rust)中进行后处理以聚合调用栈。
Instruments UI 工作流程
- 模板:时间性能分析器
- 使用“录制”并捕获慢速路径(启动阶段与稳定状态)
- 调用树使用技巧:
- 隐藏系统库
- 反转调用树
- 按线程分离
- 关注热点帧和调用次数
常见问题与修复
- 分析了错误的应用程序:LaunchServices 解析了已安装的应用,而非本地构建版本。
- 修复方法:使用直接二进制路径,或
--attach配合已知的进程ID。
- 修复方法:使用直接二进制路径,或
- 无样本 / 空跟踪记录:应用退出过快或从未执行到目标工作。
- 修复方法:延长捕获时间,在录制期间触发工作负载。
- 隐私权限提示:
xctrace可能需要开发者工具权限。- 修复方法:系统设置 → 隐私与安全性 → 开发者工具 → 允许终端/Xcode。
- 大型XML导出:
时间性能分析导出的文件非常庞大。- 修复方法:使用XPath过滤并离线聚合数据;不要在终端打印。
iOS特定注意事项
- 设备:使用
xcrun xctrace list devices和--device <UDID>。 - 如有需要,通过Xcode启动;使用
xctrace --attach附加。 - 确保有调试符号以获取有意义的堆栈信息。
验证清单
- 确认跟踪的进程路径与目标构建版本匹配。
- 确认堆栈信息显示了预期的应用程序帧。
- 捕获涵盖缓慢操作(启动/刷新)。
- 若进行优化,则导出堆栈以便自动比对差异。
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~