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