В Mac OS X, если я отправляю SIGQUIT своей программе на C, она завершается, но файл дампа памяти отсутствует.
Нужно ли вручную включать дамп ядра в Mac OS X (как?) Или они записываются в другое место вместо рабочего каталога?
Кажется, они подавлены по умолчанию.Запуск
$ ulimit -c unlimited
Включит дамп памяти для текущего терминала, и он будет помещен в / cores / как core.PID.При открытии нового сеанса для него снова будет установлено значение по умолчанию.
В macOS ваши аварийные дампы автоматически обрабатываются Crash Reporter .
Вы можете найти файлы обратного отслеживания, выполнив Консоль и перейдя к Диагностика пользователяРаздел отчетов (в разделе «Информация о диагностике и использовании») или вы можете найти их в ~/Library/Logs/DiagnosticReports.
~/Library/Logs/DiagnosticReports
. Вы также можете проверить, где создаются дампы, путем мониторинга файла system.log, например,
system.log
tail -f /var/log/system.log | grep crash
Актуальные core файлы дампа, которые вы можете найти в /cores.
/cores
См. Также:
Ответ выше,
ulimit -c неограничено
работает - но обязательно запустите его в том же терминале, с которого вы запустите программу, которая выдает дамп ядра. Сначала вам нужно выполнить команду ulimit.
Кроме того, должен существовать каталог / cores, и пользователь, запустивший программу, должен иметь права на запись в нее.
по умолчанию, определенные каталоги в Mac OSX скрыты. Вы можете включить эту функцию в терминале, и тогда дамп ядра должен быть виден в каталоге /cores.
по умолчанию написать com.apple.finder AppleShowAllFiles TRUE