Я хотел бы знать, как создать файл дампа ядра в Ubuntu. Я использую Ubuntu 8.04.1 и gcc-компилятор 4.2.3. Я написал простую C-программу для создания дампа ядра. Я скомпилировал программу, как в gcc -g badpointer.c. Когда я запускаю программу, она дает ошибку сегментации, но не создается дамп ядра. Какие дополнительные вещи мне нужно сделать для создания файла дампа ядра?
Как создать файл дампа ядра в Ubuntu
Ответ 1
Linux
Активируйте ваши coredumps:
ulimit -c unlimited
Также проверьте:
$ sysctl kernel.core_pattern
чтобы увидеть, где создаются ваши дампы (%e
будет именем процесса, а %t
будет системным временем).
Вы можете изменить его в /etc/sysctl.conf, а затем перезагрузить с помощью sysctl -p
.
Вы можете проверить это:
sleep 10 &
killall -SIGSEGV sleep
Если дамп ядра успешен, вы увидите "(core dumped)" после индикации ошибки сегментации.
Смотрите также:
- Как создать дамп ядра в Linux, когда процесс получает ошибку сегментации?
- Как автоматически генерировать трассировку стека при сбое моей программы
Ubuntu
Если у вас Ubuntu, ваши дампы создаются Apport в /var/crash
, однако по умолчанию он отключен.
Для более подробной информации, проверьте: Где я могу найти дамп ядра в Ubuntu?
macOS/OS X
В macOS аварийные дампы автоматически создаются Crash Reporter в виде обратных следов. Вы можете найти эти файлы сбоев, запустив Консоль и перейдя в раздел "Отчеты о диагностике пользователя" (в разделе "Информация о диагностике и использовании"), или вы можете найти их в ~/Library/Logs/DiagnosticReports
.
Фактические файлы ядра генерируются в /cores
.
Подробнее: Как создать дамп ядра в Mac OS X?
Ответ 2
Проверьте вывод ulimit -c
, если он выдает 0, вот почему у вас нет ядра.
Используйте
ulimit -c unlimited
чтобы разрешить создание ядра (возможно, заменить unlimited
пределом реального размера более безопасным).
Ответ 3
Установите максимальный размер дампа ядра с помощью ulimit -c
SIZE.