Дамп ядра обычно генерируется в ответ на определенные сигналы их обработчиком по умолчанию. Если вы измените этот обработчик, вы измените ответ и не получите дамп ядра.
По умолчанию дамп ядра генерируется в ответ на сигналы, возникающие из-за сбоев (SIGSEGV (доступ к неотображенной памяти), SIGILL (недопустимая инструкция), SIGBUS (различные другие неправильные обращения к системе)) и сигнал SIGABRT, который используется когда программа сама обнаруживает фатальную ошибку (в стандартном режиме выполнения, из assert или путем вызова abort()
). Это также по умолчанию для некоторых других сигналов. В частности, SIGUSR1, который программа не должна получить, если не готова обработать ее и изменить обработчик. См. man 7 signal
для полного списка.
Обратите внимание, что «обработчик по умолчанию» не является кодом в приложении. Это специальное значение, указывающее ядру, что оно должно предпринять определенные действия от имени приложения. Это действие - выход для некоторых сигналов, выход с дампом ядра для других и ничего не делать для остальных.