网淘吧来吧,欢迎您!

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

Instruments Profiling

选择正确的二进制文件(关键)

注意:如果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附加。
  • 确保有调试符号以获取有意义的堆栈信息。

验证清单

  • 确认跟踪的进程路径与目标构建版本匹配。
  • 确认堆栈信息显示了预期的应用程序帧。
  • 捕获涵盖缓慢操作(启动/刷新)。
  • 若进行优化,则导出堆栈以便自动比对差异。

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第409057名访客 今日有0篇新文章/评论