Рекомендуемые сигналы для ловли? - PullRequest
1 голос
/ 14 марта 2011

В настоящее время я перехватываю SIGSEGV, отправляю себе электронное письмо, а затем прекращаю работу (), чтобы получить файл ядра и отладить свою программу. (Если бы я не поймал, я бы не узнал, что моя конкретная программа вышла из строя. Моя программа запущена на отдельном сервере от моего.)

Есть ли какие-либо другие сигналы, которые я должен отловить для отладки или по причинам, о которых мне следует знать?

Ответы [ 3 ]

3 голосов
/ 14 марта 2011

Что заставляет вас думать, что SEGV еще не уже не повредил память вашей программы так сильно, что попытка отправить электронную почту не увенчалась успехом?

Вы должны следовать правилам разделения ответственности и контролировать свою программу из совершенно другой программы.

Просто имейте (очень простую, поэтому гораздо менее вероятную ошибку) программу, которая проверяет, работает ли ваша основная программа, и, если нет, отправляет вам это электронное письмо. Вы даже можете выполнить глубокую защиту и запустить две программы проверки, обе из которых проверяют основную программу и друг друга.

Если вы такой же параноик, как я, вы даже можете запускать их на разных машинах: -)

0 голосов
/ 14 марта 2011

Вы, вероятно, не должны ловить SIGSEGV / SIGBUS и т. Д.

Вместо этого вы должны написать программу-обертку, которая будет определять, выходит ли подпроцесс из сигнала, и идентифицировать проблему, а затем этот процесс может выполнить любое необходимое действие.

Если это серверный процесс, вы, вероятно, также захотите перезапустить его, если он неожиданно завершится с ошибкой.

0 голосов
/ 14 марта 2011

Что ж, если ваша программа подключается к консоли, вы можете захотеть перехватить SIGINT для сброса / сброса любых буферов / журналов, которые вы удерживаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...