Веселый вопрос. Короткий ответ:
sudo defaults write "/System/Library/CoreServices/Problem Reporter.app/Contents/Info" LSUIElement -bool false
Это должно привести к тому, что Problem Reporter появится в Dock при следующем запуске.
Как я пришел к ответу: Когда происходит сбой, /System/Library/CoreServices/ReportCrash
запускается launchd
соответствии с одним из com.apple.ReportCrash*.plist
файлы в /System/Library/Launch{Daemons,Agents}/
. Это ответственно за генерацию отчета о сбое, который вы найдете в [~]/Library/Logs/CrashReporter/
или [~]/Library/Logs/DiagnosticReports
.
Похоже, что ReportCrash может инициировать отображение диалогового окна, похожего на диалоговое окно "Отчет о проблемах для приложения" - оно содержит строку «/System/Library/PrivateFrameworks/CrashReporterSupport.framework», которая содержит ресурсы, используемые для локализации текст отображается в диалоговом окне. Он также содержит вызовы API-интерфейса CFUserNotification
. Но процесс ReportCrash завершается через некоторое время, в то время как диалоговое окно продолжает отображаться. (Подход CFUserNotification
скорее всего, является запасным вариантом в случае, если _CROpenProblemReport
, в котором частная среда CrashReporterSupport
открывает приложение, которое вы видите, не работает.)
Угадай, что продолжает работать? /System/Library/CoreServices/Problem\ Reporter.app
. Если вы open
этот файл, появится диалоговое окно с отчетом о проблеме. Причина, по которой вы не видите этого в Dock или в списке Cmd-Tab, заключается в том, что в его файле Info.plist есть запись LSUIElement = 1
.
Могу поспорить, что вы можете сделать это так, чтобы вы могли видеть его в Dock и Cmd-Tab, изменив значение LSUIElement
на <false/>
в /System/Library/CoreServices/Problem\ Reporter.app/Contents/Info.plist