用 sample 诊断卡死的程序

用系统自带的 sample 命令抓取无响应应用的调用栈报告,定位卡住的原因。

macOS性能sample 采样诊断低风险
运行 sample "应用名" 5 -file /tmp/hang-sample.txt,记录 5 秒调用栈到报告文件。

01命令

命令
$ sample TextEditor 5 -file /tmp/hang-sample.txt

02作用说明

sample 会附加到正在运行的进程,反复记录每个线程的调用栈,并生成一份独立报告,明确指出程序卡在哪个函数上——比如在等锁、等网络响应还是读磁盘。它不需要安装 Xcode,是应用出现彩球转圈时最常抓的第一手材料;报告开头就标出耗时最长的堆栈。进程名可以在活动监视器里查,也可以直接用数字 PID 代替名称。

03风险

风险低风险
!注意: 采样其他用户或系统进程需要 sudo;报告中可能包含你电脑上的文件路径,公开发布前请先检查。采样本身几乎不影响性能,但一定要在卡住发生时抓取。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

  • sample(1) macOS man page
    unix.com · technical · 2026-09-17
    依据: 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 · vendor-doc · 2026-09-17
    依据: Apple's overview of macOS debugging tools including sample, used to capture where a hung process is stuck.

最后验证: 2026-09-18 · 分类: 开发者

06相关方案