如何在OSX上模拟进程/守护程序崩溃?

Ste*_*sov 8 crash macos daemon

我如何invoke/ simulate process/ daemon崩溃OSX以及接收崩溃报告的结果

/图书馆/日志/ DiagnosticRepors

(例如opendirectoryd_2013-06-11-125032_macmini61.crash)?

我尝试使用Activity Monitor强制退出守护进程,但没有收到任何报告.我需要崩溃一些系统或第三方进程(不是我自己开发的).

Mar*_*n R 13

您可以通过发送"分段违规"信号强制几乎任何进程崩溃.

示例:查找"opendirectoryd"的进程ID:

$ ps -ef | grep opendirectoryd
    0    15     1   0  9:14am ??         0:01.11 /usr/libexec/opendirectoryd
          ^-- process id

向进程发送信号:

$ sudo kill -SEGV 15

这将终止进程并导致编写诊断报告,这可以在"system.log"中进行验证:

Oct 31 09:17:17 hostname com.apple.launchd[1] (com.apple.opendirectoryd[15]): Job appears to have crashed: Segmentation fault: 11
Oct 31 09:17:20 hostname ReportCrash[420]: Saved crash report for opendirectoryd[15] version ??? (???) to /Library/Logs/DiagnosticReports/opendirectoryd_2013-10-31-091720_localhost.crash

但请注意,故意崩溃系统服务可能会导致严重问题(系统不稳定,数据丢失......),因此您应该确切知道自己在做什么.


gai*_*ige 1

除非您能找到合法的错误并使其崩溃,否则您无法以产生诊断报告的方式从外部使守护程序崩溃。所有强制退出功能都不受诊断报告的影响,因为它们是外部问题。

  • 正如 Martin R 的回答所证明的那样,这显然是错误的。 (5认同)