Здравствуйте, Аноним, Вы писали:
А>Как отлаживать демона под Linux? Можно ли подключиться к нему отладчиком? Какие вообще существуют отладчики, пригодные для этой цели?
В Linux есть куча полезных тулов для анализа поведения демона, которые могут
быть полезны когда нет доступа к исходникам или логгирование отсутствует (или
плохо реализовано, когда из логов ничего не понятно).
1) strace
Очень важный тул, который часто позволяет за 5 минут понять в чем проблема
Наиболее распространенные ситуации
— что-то возвращает EPERM, EACCES, EEXIST, etc
— висим на вызове connect или read
— кто-то убивает дочерние процессы
— проблема с блокировками (deadlocks, livelocks)
Иногда полезен бывает и ltrace.
2) Network & files tools
Демоны часто сетевые, так что нужно занать полезные тулы для сетевой отладки
— tcpdump/wireshark
— netstat/ip/route
— lsof
— ping/traceroute/nc/
— dig/nslookup
3) SystemTap
В случае, если тулы, описанные выше, не помогают, то можно использовать SystemTap
с фильтром по PID'у демона. Это пожалуй самый гибкий и информативный тул, но требует
некоторых знаний того, что лежит за сиситемными вызовами и вообще знаний ядра.
Все, что описано выше, — дополнение к хорошо продуманный системе логгирования.
Грамотные логи позволяют понять 90% проблем.
P.S.
IMHO, использование GDB не сильно помогает, разве что в довольно простых
случаях при анализе core дампов.