Где дамп ядра написан на Mac?

В Mac OS X, если я отправлю SIGQUIT в мою программу на C, он завершается, но нет файла дампа ядра.

Вам нужно вручную включить дампы ядра в Mac OS X (как?), или они записываются в другое место вместо рабочего каталога?

Ответ 1

Кажется, они подавлены по умолчанию. Запуск

$ ulimit -c unlimited

Включит дамп ядра для текущего терминала, и он будет помещен в /cores как core.PID. Когда вы открываете новый сеанс, для него снова будет установлено значение по умолчанию.

Ответ 2

В macOS ваши аварийные дампы автоматически обрабатываются Crash Reporter.

Вы можете найти файлы обратной трассировки, выполнив Консоль и перейдя в раздел "Отчеты о диагностике пользователя" (в разделе "Информация о диагностике и использовании"), или вы можете найти их в ~/Library/Logs/DiagnosticReports.

Вы также можете проверить, где создаются дампы, отслеживая файл system.log, например,

tail -f /var/log/system.log | grep crash

Фактические файлы дампа ядра вы можете найти в /cores.

Смотрите также:

Ответ 3

Ответ выше,

ulimit -c неограниченный

работает, но обязательно запустите его в том же терминале, с которого вы запустите программу, которая сбрасывает ядро. Сначала нужно выполнить команду ulimit.

Ответ 4

по умолчанию скрытые специфические каталоги в mac osx. вы можете включить эту функцию в терминале, а затем дамп ядра должен быть видимым в каталоге/ядрах.

defaults написать com.apple.finder AppleShowAllFiles TRUE

Ответ 5

Кроме того, каталог /corees должен существовать, и пользователь, запускающий программу, должен иметь права на запись.