macOS性能诊断与开发者工具
macOS 提供 Activity Monitor、Instruments、spindump、sample、Console 等工具。它们能帮助开发者分析 CPU、内存、卡顿、崩溃和系统日志。
# 1. 学习目标
- 掌握 macOS 常见性能和诊断工具。
- 能分析进程 CPU、内存、线程卡顿和崩溃日志。
- 理解 GUI 应用和命令行程序诊断方式差异。
# 2. 知识框架
macOS性能诊断与开发者工具
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料
macOS 诊断从 Activity Monitor 快速观察,再用 Console 看日志,用 sample/spindump/Instruments 深入调用栈和时间线。
# 3. 核心概念
| 主题 | 说明 | 工程关注 |
|---|---|---|
| Activity Monitor | 图形化资源监控工具 | 快速观察 CPU、内存、能耗、磁盘、网络 |
| Instruments | Xcode 性能分析套件 | 时间分析、内存泄漏、系统调用 |
| spindump/sample | 采样进程调用栈 | 卡顿、CPU 热点 |
| Console | 系统和应用日志查看器 | 崩溃、权限、安全事件 |
# 4. 机制与实践
- 卡顿问题先采样,不要只看表面 CPU 百分比。
- 崩溃问题收集 crash report、系统版本、芯片架构和复现路径。
- 开发工具链问题要同时看终端输出、系统日志和权限弹窗。
# 5. 常用命令与工具
| 命令或工具 | 作用 | 使用建议 |
|---|---|---|
sample pid 5 | 采样进程 5 秒调用栈 | 分析卡顿和热点 |
spindump pid | 生成进程卡顿诊断报告 | 长时间无响应分析 |
log stream --predicate 'process == "App"' | 实时过滤统一日志 | 观察应用日志 |
# 6. 常见误区
- 只看 Activity Monitor:它适合概览,深入问题需要采样、日志和 Instruments。
- 忽略架构和系统版本:性能和崩溃可能只在特定 macOS 或芯片上出现。
- 没有复现记录:GUI 问题缺少操作路径会让诊断非常困难。
# 7. 进阶研究方向
- 学习 Instruments 的 Time Profiler、Leaks、Allocations。
- 研究统一日志系统 os_log 的分类和隐私策略。
- 把 macOS 开发机问题沉淀成诊断脚本。
# 8. Tips 快问快答
Q:macOS 卡顿怎么抓证据?
A:先记录复现步骤,再用 sample 或 spindump 抓调用栈,并结合 Console 日志。
Q:Instruments 适合什么场景?
A:适合深入分析 CPU 时间、内存分配、泄漏、IO 和图形性能。
Q:为什么日志里有 private?
A:统一日志会保护隐私字段,未授权或未配置时会隐藏敏感内容。
# 9. 总结
macOS 诊断工具很丰富。新手会看 Activity Monitor,进阶会抓日志,专家会用采样和 Instruments 建立证据链。
上次更新: 2026/06/25, 10:02:19