Как включить программу для вывода ядра на Linux?

Я хочу, чтобы программа сбрасывала kernel ​​при сбое в Linux для целей отладки. Как включить эту функцию – это требует каких-либо изменений в программе?

Вы можете включить его самостоятельно, выполнив следующие действия:

ulimit -c unlimited 

Если вы хотите, чтобы это было постоянным, поместите его в файл ~ / .profile

Альтернативно, вы можете включить дампы ядра для всех пользователей в системе, поместите следующую строку в /etc/sercurity/limits.conf (по крайней мере, на ubuntu):

 * 0 core -1 

Является ли генерация дампа ядра или нет, управляется оболочкой

Если вы используете bash.

 ulimit -c unlimited 

В дополнение к ответу Троя вам нужно будет добавить в e / etc / sysctl.conf – где и как вам нужно генерировать kernel ​​- вот так:

 kernel.core_uses_pid=1 kenrel.core_pattern= /tmp/cores/core-%e-%p-%u-%g-%s-%t fs.suid_dumpable=2 

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

Установите максимальный размер основного файла

ulimit -c неограниченно

Запустите программу

$ ./your_program

Ошибка сегментации (сброс ядра)

Он будет генерировать файл дампа ядра. Используйте gdb для анализа дампа ядра

gdb ./your_progrm core

Вы можете указать, как отлаживать использование GDB для получения дополнительной информации.