Похоже, я не могу создавать дампы ядра в Mac OS X 10.6.8.
$ ulimit -c unlimited
$ ./a.out
Hello world!
Segmentation fault
$ find ~/ -type f -name core
# ls -la /cores/
total 0
drwxrwxr-t@ 2 root admin 68 24 jui 2010 .
drwxrwxr-t 31 root admin 1122 17 oct 15:52 ..
Мой текущий каталог, мой ДОМ и / cores / остаются пустыми…
По умолчанию о сбоях сообщается в файлах .crash
, которые можно найти в /Library/Logs/DiagnosticReports
(для всей системы) и ~/Library/Logs/DiagnosticReports
(для пользователя). Эти файлы можно открыть с помощью приложения Console , в User или System Reports . Файлы .crash
представлены в текстовом формате и должны содержать соответствующую информацию о сбое.
Чтобы активировать полные дампы ядра, убедитесь, что каталог /cores
имеет разрешения на запись для текущего пользователя (тестирование: touch /cores/test && rm /cores/test
). Кроме того, убедитесь, что у вас нет ограничений на размер файла ядра:
ulimit -c unlimited
Имя файла дампа памяти имеет формат: core
. PID
.
Если каталог скрыт, вы можете показать скрытые файлы с помощью:
defaults write com.apple.finder AppleShowAllFiles TRUE
Вы можете проверить это с помощью следующих команд:
sleep 100 &
killall -SIGSEGV sleep
, которые должны сказать дополнительные (core dumped)
], после сообщения Ошибка сегментации .
Файлы дампа основной памяти по умолчанию должны быть найдены в каталоге /cores
.
Пример по командам:
$ ulimit -c unlimited
$ sleep 100 &
$ killall -SIGSEGV sleep # Then press Enter few times till below message is shown
[1]+ Segmentation fault: 11 (core dumped) sleep 100
$ ls /cores
core.13652
$ lldb -c /cores/core.*
(lldb) target create --core "/cores/core.13652"
Core file '/cores/core.13652' (x86_64) was loaded.
(lldb) bt
* thread #1, stop reason = signal SIGSTOP
* frame #0: 0x00007fffa7d13fde libsystem_kernel.dylib`__semwait_signal + 10
frame #1: 0x00007fffa7c9ab92 libsystem_c.dylib`nanosleep + 199
frame #2: 0x000000010c090002 sleep`rpl_nanosleep + 128
См. также: Техническое примечание TN2118 - Дампы ядра ядра .