LINUX.ORG.RU

отладка модуля kded

 ,


0

1

Хай

есть прикладуха в виде модуля kded_mymodule.so, с исходниками на плюсах, проект реализован в kdevelop. собсно вопрос - КАК эту гадину скормить отладчику? Гугль молчит ака Зой Космодемьянский.

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

И еще непонятен такой момент - лежит собранный модуль в /usr/lib/kde4. Не работает, все нормально. Правлю исходники - добавляю кучу принтов на каждый чих, собираю, кладу поверх старого, запускаю кнопочкой в системсеттингах - в логах вывод _старой_ версии... wtf?

вопрос - КАК эту гадину скормить отладчику?

Собрать с флагами -O0 -g3 и запустить через gdb </path/to/binary>.

Правлю исходники - добавляю кучу принтов на каждый чих, собираю, кладу поверх старого, запускаю кнопочкой в системсеттингах - в логах вывод _старой_ версии... wtf?

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

m0rph ★★★★★
()

запускаю кнопочкой в системсеттингах - в логах вывод _старой_ версии... wtf?

7 бед - 1 resetrelogin

Stil ★★★★★
()
Ответ на: комментарий от m0rph

то, что старая запускается, я и сам догадался. бггг :))) мне интересно - где и как оно может кэшироваться.

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

Эм, а она (.so-шка) разве не грузится _один_ раз kdeinit'ом или соответствующим процессом?

Вообще, поглядел, сейчас на своей машине. kded определяется так:

alex@galene ~ $ ps ax | grep kded
22095 ?        Sl     0:00 kdeinit4: kded4 [kdeinit]
22664 pts/3    S+     0:00 grep kded 
alex@galene ~ $ ls -l /proc/22095/exe
lrwxrwxrwx 1 alex alex 0 сен 14 22:44 /proc/22095/exe -> /usr/lib/kde4/bin/kdeinit4
alex@galene ~ $ _

Так что, думаю, надо перестартовать процесс, и да, самый простой способ это сделать и не привести при этом KDE'шные потроха в непотребное состояние - это перелогиниться.

Да, проверить, что за библиотеки на самом деле загружены некоторым запущенным бинарником можно при помощи lsof:

lsof -P -T -p Application_PID
AlexM ★★★★★
()
Ответ на: комментарий от AlexM

Точно! спасибо, что напомнил про lsof :)

Меня сбило с толку то, что после остановки модуля в системсеттингах и физического удаления сошки - при попытке запуска вываливалась ругань об отсутствии оной. Тогда как в памяти либа все это время так и висит, как оказалось. Но, как видимо, действие по кнопке просто проверяет наличие библиотеки на диске и передает управление в загруженный образ, а не перегружает ее. Нафейхуа так сделано - непонятно, ну да ладно, одной непоняткой меньше.

debosh2k
() автор топика
Ответ на: комментарий от gv

не осилил. да, gbd --pid $kded_PID kded_mymodule.so позволяет прицепится к процессу и попробовать понаблюдать... но ничего вменяемого получить у меня масла не хватило. муторно это - на каждую падучую приходится перелогиниваться - это песец какой-то. Надо буквари вдумчиво почитать. Короче, перекурочил модуль в стандалон раннейбл - с логикой разберусь - заверну обратно. всем спасибо :)

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