Где дамп ядра написан на Mac? - PullRequest
68 голосов
/ 17 января 2010

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

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

Ответы [ 5 ]

90 голосов
/ 17 января 2010

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

$ ulimit -c unlimited

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

27 голосов
/ 11 октября 2014

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

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

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

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

Актуальные core файлы дампа, которые вы можете найти в /cores.

См. Также:

12 голосов
/ 14 февраля 2012

Ответ выше,

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

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

10 голосов
/ 17 августа 2013

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

10 голосов
/ 17 января 2010

по умолчанию, определенные каталоги в Mac OSX скрыты. Вы можете включить эту функцию в терминале, и тогда дамп ядра должен быть виден в каталоге /cores.

по умолчанию написать com.apple.finder AppleShowAllFiles TRUE

...