Подтвердить что ты не робот

Заставить ядро ​​сбросить с активной, нормально работающей программы на FreeBSD

Я пишу код обработки ошибок для сервера на FreeBSD. Для чрезвычайно серьезных ошибок я хочу избежать повреждения данных путем немедленного прекращения. Это легко, exit(3). Перед тем, как я выйду, я выводил свои соответствующие переменные, которые привели меня туда. Однако в идеале это прекращение будет сопровождаться .core, чтобы я мог полностью исследовать, что привело меня к этому катастрофическому (и, вероятно, трудно воспроизвести) состоянию.

Как я могу заставить это произойти?

4b9b3361

Ответ 1

kill -QUIT process_id приведет к созданию дампа ядра из работающего процесса (при условии, что ограничения ресурса позволяют это).

Или см. man 3 abort, чтобы программа сама выгружалась.

Добавлен. Из интерактивной оболочки можно выполнить прогонную программу с отменой ключа quit, обычно Ctrl + \, который отправляет SIGQUIT так же, как и более общий Ctrl + C отправляет SIGINT. Это идентично kill -QUIT…, это просто проще ввести, если вы находитесь на управляющем терминале. См. man 1 stty, если клавиша останова по умолчанию отличается.