用 sample 诊断卡死的程序
用系统自带的 sample 命令抓取无响应应用的调用栈报告,定位卡住的原因。
运行 sample "应用名" 5 -file /tmp/hang-sample.txt,记录 5 秒调用栈到报告文件。
01命令
命令
$ sample TextEditor 5 -file /tmp/hang-sample.txt02作用说明
sample 会附加到正在运行的进程,反复记录每个线程的调用栈,并生成一份独立报告,明确指出程序卡在哪个函数上——比如在等锁、等网络响应还是读磁盘。它不需要安装 Xcode,是应用出现彩球转圈时最常抓的第一手材料;报告开头就标出耗时最长的堆栈。进程名可以在活动监视器里查,也可以直接用数字 PID 代替名称。
03风险
!注意: 采样其他用户或系统进程需要 sudo;报告中可能包含你电脑上的文件路径,公开发布前请先检查。采样本身几乎不影响性能,但一定要在卡住发生时抓取。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- sample(1) macOS man page依据: Man page for sample: samples the call stack of a running process for a duration and writes a report file.
- Technical Note TN2124: Mac OS X Debugging Magic依据: Apple's overview of macOS debugging tools including sample, used to capture where a hung process is stuck.
最后验证: 2026-09-18 · 分类: 开发者