OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  native-app-performance:原生 macOS/iOS 应用程序性能分析工具

native-app-performance:原生 macOS/iOS 应用程序性能分析工具

 
  microservice ·  2026-02-20 14:06:42 · 3 次点击  · 0 条评论  

名称: native-app-performance
描述: 通过 xctrace/Time Profiler 对原生 macOS/iOS 应用进行性能剖析,并支持纯命令行分析 Instruments 的 .trace 文件。适用于性能剖析、附加进程、录制、分析 .trace 文件、定位热点或优化原生应用性能,无需打开 Instruments 图形界面。


原生应用性能分析(纯命令行)

目标:通过 xctrace 录制 Time Profiler,提取样本,进行符号化,并定位性能热点,全程无需打开 Instruments。

快速开始(命令行)

1) 录制 Time Profiler(附加到进程):

# 先启动应用,然后附加录制
xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --attach <pid>

2) 录制 Time Profiler(启动并录制):

xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --launch -- /path/App.app/Contents/MacOS/App

3) 提取时间样本:

scripts/extract_time_samples.py --trace /tmp/App.trace --output /tmp/time-sample.xml

4) 获取符号化所需的加载地址:

# 应用运行时执行
vmmap <pid> | rg -m1 "__TEXT" -n

5) 符号化并排序热点:

scripts/top_hotspots.py --samples /tmp/time-sample.xml \
  --binary /path/App.app/Contents/MacOS/App \
  --load-address 0x100000000 --top 30

工作流程注意事项

  • 始终确认正在剖析的是正确的二进制文件(本地构建版 vs /Applications 版)。使用 --launch 时建议直接指定二进制路径。
  • 确保在录制期间触发待分析的慢速路径(如菜单打开/关闭、刷新等操作)。
  • 如果调用栈为空,请延长录制时间或避免录制空闲时段。
  • 使用 xcrun xctrace help recordxcrun xctrace help export 查看正确的参数说明。

包含的脚本

  • scripts/record_time_profiler.sh:通过附加或启动方式录制性能数据。
  • scripts/extract_time_samples.py:从 .trace 文件中导出时间样本 XML。
  • scripts/top_hotspots.py:符号化并排序应用的主要调用帧。

常见问题

  • ASLR 机制要求必须使用运行时通过 vmmap 获取的 __TEXT 段加载地址。
  • 如果使用新构建版本,请更新 --binary 路径;符号必须与录制时的版本匹配。
  • 纯命令行流程:如果通过 atos 完成符号化,则无需打开 Instruments 界面。
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor