LINUX.ORG.RU

Как можно отлаживат «подвисшие» процессы ?


0

0

Вобщем, есть демон который периодически форкается для выполнения определенных действий(в/выв), потомки работают потом дохнут , но иногда некоторые потомки не дохнут а засыпают вечным сном. я понимаю что где-то что-то не состыковывается но хочу это оладить а не переписывать заново. debug вывода не ватает. Что делал: компилил с -g запускал gdb my_bugd (gdb) attach <pid повисшего> .. . interupt .. .. in __libc__read() // типа того .. пытался s ,n , f - не катит пытался ctrl-c тоже самое

Я наверно чего-то не догоняю , наверно есть какойто нормальный метод отладки таких прог? Подскажите plz.

P.S Кстати, хотелось бы узнать как можно отладить прогу вплоть до syscall а то доходим скажем до printf("hello word"); и все дальше только Asm .


>P.S Кстати, хотелось бы узнать как можно отладить прогу вплоть до >syscall а то доходим скажем до printf("hello word"); и все дальше >только Asm

А ты уверен в том, что glibc, где printf определен, скомпилирован с необходимой деблохатору информацией, каковая засовывается в бинарники ключиком -g?

ДВ

DmVo
()
Ответ на: комментарий от DmVo

Re:

Не уверен. предлогаешь ререкомпилить libc ?

Teplov
() автор топика

>>Не уверен. предлогаешь ререкомпилить libc ?
поставь debug версию libc и компили с ней

pudgy
()

ltrace -f --output=debug.log ./daemon
ну или strace

HEKTO
()
Ответ на: комментарий от pudgy

А где ее взять и/или как называется файл ? Просто никогда на эту тему не заморачиволся а счаз вот захотелось ;)

Teplov
() автор топика

Кстати, а зачем копать так глубоко? Или ты собираешься исследовать glibc на предмет деталей реализации еёных функций и что-то там переписывать/улучшать/оптимизировать?

Но если очень хочется, то я бы просто поставил две glibc одновременно, "родную" из дистрибутива и вторую, для дебаггинга, где-нибудь в /opt/glibc-debug. Тогда при желании можно насильно указать деблохируемой программе пользоваться "второй" версией, установив переменную LD_LIBRARY_PATH=/opt/glibc-debug/lib.

Кстати, когда мне понадобилось поставить Kylix на Слакварь, и когда Кайликс заругался на непропатченную glibc из дистрибутива, то я именно так и сделал -- пропатчил glibc, собрал и поставил наряду с "родной". Описан сей процесс был на http://kylix.euro.ru

ДВ

DmVo
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.