Как создать файл дампа ядра в Ubuntu

Я хотел бы знать, как сгенерировать файл дампа ядра в Ubuntu. Я использую Ubuntu 8.04.1 и компилятор gcc 4.2.3. Я написал простую программу на C для создания дампа ядра. Я скомпилировал программу как в - gcc -g badpointer.c. Когда я запускаю программу, она дает ошибку сегментации, но дамп ядра не создается. Какие дополнительные действия мне нужно сделать для создания файла дампа ядра?


person user496934    schedule 27.05.2011    source источник


Ответы (3)


Linux

Активируйте coredump с помощью следующей команды:

ulimit -c unlimited

Также проверьте значение core_pattern:

sysctl kernel.core_pattern

чтобы увидеть, где создаются ваши дампы (%e будет именем процесса, а %t будет системным временем).

Вы можете изменить его в /etc/sysctl.conf, а затем перезагрузить sysctl -p.

Вы можете проверить это:

sleep 10 &
killall -SIGSEGV sleep

Если выгрузка ядра прошла успешно, вы увидите «(дамп ядра)» после индикации ошибки сегментации. В противном случае еще раз проверьте свои ulimits.

Смотрите также:


Ubuntu

Если у вас Ubuntu, ваши дампы создаются с помощью Apport в /var/crash, однако по умолчанию он отключен.

Для получения дополнительных сведений проверьте: Где я могу найти дамп ядра в Ubuntu?


macOS / OS X

В macOS аварийные дампы автоматически создаются Crash Reporter в виде трассировки. Вы можете найти эти файлы сбоя, запустив Console и выбрав «Отчеты о диагностике пользователей» (в группе «Диагностическая информация и информация об использовании») или вы можете найти их в ~/Library/Logs/DiagnosticReports.

Фактические файлы ядра создаются в /cores.

Подробнее: Как создавать дампы ядра в Mac OS X? < / а>

person kenorb    schedule 25.08.2013
comment
с sleep 10 & killall -SIGSEGV sleep как добавить параметры для повторного открытия или закрытия приложения? - person e-info128; 27.05.2017
comment
@ e-info128 После того, как процесс умер из-за сигнала SIGSEGV (в основном разбился), вы не сможете его повторно открыть. Вам нужно снова запустить новый процесс, если это не сервис, чтобы он мог возродиться автоматически. - person kenorb; 29.05.2017

Проверьте вывод ulimit -c, если он выводит 0, поэтому у вас нет дампа ядра.

Использовать

ulimit -c unlimited

чтобы разрешить создание ядра (возможно, замените unlimited реальным ограничением размера для большей безопасности).

person Cédric Julien    schedule 27.05.2011

Установите максимальный размер дампа ядра с помощью ulimit -c SIZE.

person lhf    schedule 27.05.2011