coredumpctl: работа с дампами памяти упавших служб
Инструмент для работы с дампами памяти, сохранёнными службой systemd-coredump. Показывает список падений, трассировки стека и умеет открывать дамп в отладчике.
Что делает
Дамп — это единственный источник правды о причине падения по сигналу. Трассировка обычно сразу указывает библиотеку или функцию, в которой произошёл сбой, и этого хватает, чтобы понять, что обновлять или отключать.
Для сохранения дампов нужны две вещи: установленная служба сохранения и разрешённый предел размера дампа у службы (LimitCORE=infinity). На время разбора это стоит включить даже там, где обычно выключено.
Где ставится. Команда в терминале. Настройки — в /etc/systemd/coredump.conf.
Значения
| Значение | Что происходит |
|---|---|
coredumpctl list | список сохранённых дампов. |
coredumpctl info имя | подробности и трассировка последнего падения. |
coredumpctl debug имя | открыть дамп в отладчике. |
coredumpctl dump имя > core | выгрузить дамп в файл. |
Пример
Разбор падения службы по дампу.
coredumpctl list --no-pager | tail -5
coredumpctl info myapp | head -40
# при необходимости глубже:
coredumpctl debug myapp
Для читаемой трассировки нужны отладочные символы программы. Без них видны хотя бы имена библиотек, и это уже сужает поиск.
Типичные ошибки
При LimitCORE=0 дампы не создаются, и разбирать падение придётся по сообщениям программы.
Дампы занимают место: на нагруженной машине с частыми падениями раздел заполняется быстро.
В дампе есть содержимое памяти процесса, включая секреты: обращаться с файлами дампов надо как с чувствительными данными.
Связанные ошибки
- Failed with result 'core-dump'Состояние core-dump: процесс службы аварийно завершился и сохранил дамп памяти. Как открыть дамп и прочитать трассировку.
- signal=SEGV (status=11/SEGV) в systemdПроцесс службы завершён сигналом SEGV: обращение к недопустимой памяти. Как собрать дамп и что смотреть.
- signal=ABRT (status=6/ABRT) в systemdПроцесс службы завершён сигналом ABRT: программа сама прервала работу после внутренней проверки. Где искать причину.
Рядом стоящие параметры
Источники
- coredumpctl(1)
- coredump.conf(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)