Как определить точку сбоя в программном обеспечении C - PullRequest
0 голосов
/ 19 января 2012

Первый: извиняюсь за мой плохой английский.

Извините за этот вопрос о программном обеспечении новичка, но я заблудился из-за своей собственной логики ...

Немного предыстории:

Я работаю над сетевым проектом C, гдеЯ пытаюсь создать сервер, который получает постепенно увеличивающееся сообщение UDP в течение увеличивающегося времени.Я пытаюсь просто установить на этом сервере «менеджер», который может отправлять отчет по определенному адресу в случае сбоя.

Мне приходит в голову то, что я установил этого менеджера в качестве слушателя вна стороне сервера.Таким образом, если сервер не получает никакого сообщения в пределах предопределенного порта, я предполагаю, что сервер отказывает.Но эта вещь не является, так или иначе, детерминированным подходом.Как долго следует указывать время сбоя этого сервера?(если в течение 5 минут сообщение не получено в порту, значит ли это, что оно дает сбой? не обязательно верно. Я могу снова увеличить его до 10 минут, но опять же, это неоправданно и непоследовательно)

Ядумая, как такое приложение, как GDB, может это сделать.В случае сбоя сервера (фреймворка) он автоматически сгенерирует файл coredump.Мне нужно сделать аналогичную вещь, как это, поэтому, когда происходит сбой фреймворка, это будет так же просто, как распечатать «Привет сбой».Как создать «менеджер» на сервере, который может дать мне отчет, если сбой сервера (с помощью C)

Любая идея будет принята с благодарностью

Большое спасибо

1 Ответ

1 голос
/ 19 января 2012

Код выхода процесса сообщает вам, вызвал ли сигнал его выход. Вы можете написать программу на C и использовать wait() для получения кода выхода или сделать это в сценарии оболочки:

#!/bin/sh

./server "$@"

EXIT=$?

if [ $EXIT -eq 0 ]
then
    echo exit success
else
    if [ $EXIT -ge 128 ]
    then
        echo exited with signal $(($EXIT - 128))
    else
        echo exited with code $EXIT
    fi
fi

Вы можете перезапустить сервер для случая сбоя или случая сигнала.

Большинство серверов полагаются на тщательную отладку и не ожидают автоматического перехвата и перезапуска в случае сбоя.

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