Как включить дамп ядра в Linux
В этом руководстве объясняется, как включить дамп ядра в Linux.
После прочтения этого руководства вы сможете проверить, включен ли дамп ядра, как включить или отключить его, как просмотреть и многое другое.
Файлы дампа ядра используются для диагностики и устранения сбоев программного обеспечения.
Дамп ядра — это неструктурированный реестр содержимого памяти, содержащий информацию о аварийном прекращении выполнения программного обеспечения, включая причину сбоя.
Другими словами, это снимок состояния программы с записью процесса выполнения и завершения. Вы можете думать о дампе ядра как о черном ящике самолета или файле журнала.
Управление дампом ядра может варьироваться от дистрибутива Linux к другому, это руководство оптимизировано как для дистрибутивов Linux на основе Debian, таких как Ubuntu, так и для дистрибутивов RedHat Linux, таких как CentOS.
Все инструкции, включенные в эту статью, содержат скриншоты, что облегчает их понимание и выполнение каждым пользователем Linux.
Включение дампа ядра в Linux
Первый шаг — проверить, включен ли дамп ядра. Для этого используйте следующую команду. Если размер файла ядра равен 0, как в приведенном ниже примере, дамп ядра отключен.
Чтобы включить дамп ядра в Linux с неограниченным размером, используйте следующую команду. Затем выполните предыдущую команду, и вы увидите, что 0 заменен на неограниченное количество.
Чтобы постоянно включать дамп ядра, вам нужно отредактировать файл /etc/security/limits.conf. Откройте его с привилегиями, используя любой текстовый редактор.
Затем добавьте следующую строку и закройте сохранение изменений:
Теперь давайте попробуем запустить приложение, запрограммированное на преднамеренный сбой.
Как вы можете видеть на скриншоте ниже, дамп ядра был сгенерирован.
В соответствии с конфигурацией по умолчанию в дистрибутивах Linux на базе Debian дамп ядра должен создаваться в текущем каталоге. Вы можете проверить это, выполнив следующую команду:
Как вы можете видеть на предыдущем рисунке, дамп ядра был сгенерирован правильно.
Для его просмотра необходимо установить отладчик GNU. Вы можете установить его с помощью apt, как показано на изображении ниже.
Обратите внимание, что пользователи систем на основе RedHat должны использовать инструмент автоматического сообщения об ошибках (ABRT) вместо GDB.
Для просмотра файлов дампа ядра используйте следующий синтаксис:
В моем случае я запускаю:
Вам будет предложено нажать «c», чтобы продолжить. Нажмите ее, и вы увидите отчет.
По умолчанию файлы дампа ядра называются core.
Вы можете изменить имя и шаблоны назначения, чтобы легко идентифицировать дампы ядра.
Команда следующая:
-%u будет включать идентификатор пользователя в имя дампа ядра. -%g будет включать идентификатор группы и %p PID.
Как видите, после повторного запуска аварийного приложения создается новый дамп ядра, включая UID, GID и PID.
Существуют дополнительные значения, которые можно использовать для определения шаблонов дампа памяти. Вы можете найти их в списке ниже.
- %%
вывести один «%»
- %p
Включает PID
- %P
Включает глобальный PID
- %i
Показывает идентификатор потока
- %I
Глобальный идентификатор потока
- %u
ID пользователя
- %g
Идентификатор группы
- %d
Режим дампа
- %s
Номер сигнала
- %t
UNIX время дампа
- %h
Имя хоста
- %e
Запускаемый файл
- %E
Путь к исполняемому файлу
Вы также можете определить каталог дампов ядра для их хранения.
Синтаксис следующий:
«/cored» — это каталог, в котором будут храниться дампы ядра. Эти имена будут включать как PID, так и Global PID.
Как видите, после запуска аварийного приложения дамп ядра был сохранен в каталоге /cored, включая PID и GPID.
Как отключить дампы ядра в Linux
Отключить дамп ядра так же просто, как включить их.
Просто установите ограничение на 0, выполнив следующую команду:
Чтобы навсегда отключить дамп ядра, отредактируйте файл /etc/security/limits.conf с помощью любого текстового редактора, как показано на рисунке ниже.
Добавьте следующие 2 строки, затем выйдите из режима сохранения изменений.
* hard core 0
Наконец, проверьте, был ли дамп ядра успешно отключен, выполнив следующее:
Как видите, предельный размер файла ядра равен 0, дамп ядра отключен.
Заключение
Дампы ядра могут быть очень полезны для процедур отладки и выявления сбоев. Рекомендуется ознакомиться с ними, чтобы улучшить реакцию на проблемы. Они также могут быть полезны для захвата данных, освобожденных динамической памятью, для извлечения информации о более не работающих программах. Они также могут быть полезны программистам для поиска ошибок. Дамп ядра может сохранить состояние процесса в определенном состоянии, чтобы вернуться к нему позже. Его также можно сбросить на удаленный хост по сети (что представляет угрозу безопасности).