名称: 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
--launch 时建议直接指定二进制路径。xcrun xctrace help record 和 xcrun xctrace help export 查看正确的参数说明。scripts/record_time_profiler.sh:通过附加或启动方式录制性能数据。scripts/extract_time_samples.py:从 .trace 文件中导出时间样本 XML。scripts/top_hotspots.py:符号化并排序应用的主要调用帧。vmmap 获取的 __TEXT 段加载地址。--binary 路径;符号必须与录制时的版本匹配。atos 完成符号化,则无需打开 Instruments 界面。