Назад | Перейти на главную страницу

Как записать подробности прерванного процесса в файл журнала

Демон запускается и работает под Debian до случайного сбоя. Я обнаружил, что иногда он прерывается из-за утверждения, которое отображается, если процесс выполняется на переднем плане, например:

/usr/include/boost/smart_ptr/shared_ptr.hpp:424: T * boost :: shared_ptr :: operator -> () const [с T = libcage :: dht :: query]: утверждение `px! = 0 'не выполнено . Прервано

Код выхода - 134, но как сохранить более подробное описание ошибки (может быть много разных) в файл журнала для последующего анализа, если процесс выполняется в фоновом режиме?

«2> / log / mylogfile» ничего не записывает, а «> / log / mylogfile» записывает выходные данные процесса, игнорируя сообщение об отмене. Также в "dmesg" или "kern.log" ничего нет.

Ты можешь использовать strace чтобы увидеть, что не так. Он будет регистрировать используемые системные вызовы, сигналы и возвращаемые значения.

Просто strace -v -s 256 -D -o /tmp/daemonlog daemonapp и вы можете увидеть детали выполнения.

-v: среда печати

-s размер строки: 256 байт

-D запустить strace как отдельный ребенок

-o файл журнала

Если ваш демон использует 'bash script', добавьте "set -x" в начало скрипта и снова запустите процесс и увидите