coredumpctl не показывает последние дампы

Вопрос или проблема

Я отлаживал ошибку сегментации и хотел получить дампы памяти. Я заметил, что coredumpctl показывал только дамп от 2024/10/29, но не от сегодня.

Я обнаружил, что ulimit -c был настроен на 0 по какой-то причине (ранее это работало), но сегодня нет. Поэтому я изменил значение. Теперь приложение, по крайней мере, сообщило, что дамп был создан (чего раньше не было). Я узнал через cat /proc/sys/kernel/core_pattern, что он установлен на core, так что файл дампа находится в той же папке. Я нашел эту команду echo "/tmp/core_dumps/core.%e.%p" | sudo tee /proc/sys/kernel/core_pattern, которая позволила мне (после создания папки core_dumps) собирать дампы в одном месте. Кажется, теоретически команда echo "|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %e" | sudo tee /proc/sys/kernel/core_pattern должна быть даже полезнее, так как, похоже, она снова позволяет использовать coredumpctl. Но она по-прежнему показывала только старый дамп.

Кажется, что команда systemctl status systemd-coredump должна работать для получения статуса вещи, управляющей записью (и передачей в coredumpctl). Но я получаю только эту ошибку:

Unit systemd-coredump.service could not be found.

systemd-coredump установлен, но его не удается найти (например, через where systemd-coredump).

Так как я могу настроить свою систему, чтобы она предоставляла мне дампы памяти (через coredumpctl)?

Ответ или решение

Для решения проблемы с получением дампов памяти с помощью утилиты coredumpctl, необходимо разобраться в нескольких аспектах конфигурации вашей системы. Ниже представлены шаги, которые позволят вам правильно настроить окружение для работы с дампами.

1. Проверка настройки ulimit

Первое, что вам нужно сделать, это убедиться, что лимит на создание дампов памяти не равен нулю. Команда ulimit -c должна вернуть положительное значение, чтобы ядро системы могло создавать дампы. Измените лимит, выполнив:

ulimit -c unlimited

Эта команда позволит вашему приложению создавать дампы памяти без ограничений.

2. Настройка core_pattern

Вы правильно установили core_pattern, чтобы специфицировать место для сохранения дампов. Убедитесь, что вы выполнили команду, подсмотренную вами:

echo "/tmp/core_dumps/core.%e.%p" | sudo tee /proc/sys/kernel/core_pattern

Также стоит убедиться, что указанная директория (/tmp/core_dumps) существует и имеет нужные разрешения для записи:

mkdir -p /tmp/core_dumps
chmod 1777 /tmp/core_dumps

3. Установка systemd-coredump

Если вы видите сообщение о том, что systemd-coredump.service не найден, это может указывать на то, что ваша система не настроена для использования управления дампами через systemd. Убедитесь в наличии пакета, выполнив:

dpkg -l | grep systemd-coredump

Если пакет не установлен, вы можете установить его через ваш менеджер пакетов (например, apt для Debian/Ubuntu):

sudo apt install systemd

4. Включение systemd-coredump

Возможно, вам потребуется перезапустить systemd для применения изменений:

sudo systemctl daemon-reload

Если после этого вы всё ещё не видите нужные дампы через coredumpctl, попробуйте следующую команду для активации systemd-coredump:

echo "|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %e" | sudo tee /proc/sys/kernel/core_pattern

После этого проверьте статус сервиса:

systemctl status systemd-coredump

5. Генерация дампа

Теперь, когда всё настроено, вам нужно протестировать, генерируя дамп. Запустите приложение, которое вызывает «сегментацию», чтобы убедиться, что дамп создаётся правильно. После этого выполните команду:

coredumpctl list

6. Итоговая проверка

Если всё сделано правильно, вы должны видеть новые дампы в списке. В противном случае, вы можете использовать journalctl для просмотра логов ошибок, связанных с systemd-coredump, что может указать на возможные проблемы.

Заключение

Следуя указанным шагам, вы сможете правильно настроить вашу систему для получения дампов памяти с использованием coredumpctl. Если у вас возникнут дополнительные проблемы, имеет смысл обратиться к документации вашей системы или сообществам, связанным с Linux и системным администрированием, для получения более специализированной помощи.

Оцените материал
Добавить комментарий

Капча загружается...