Отладка so-библиотеки, загружаемой посредством dlopen()?

CentOS 6.2, IDE Qt Creator 2.4.1 (используется GNU toolchain).


Решил прикрутить к своему fastcgi-серверу тривиальную систему плагинов. Плагины загружаются из каталога plugins/ посредством библиотечных функций типа dlopen().

Как отлаживать плагин? Ставлю точку останова, запускаю в отладке сервер — точка проигнорирована. Проблемы gdb? Проблемы моих рук или межушного ганглия?


Пока предполагаю следующие пути:

> возможно, не предоставляю отладочной информации, поэтому gdb плевать

> логгировать по старинке

> не пользоваться текущей IDE (там частенько gdb отваливается)


Заранее спасибо за адекватные ответы на, возможно, глупый вопрос.
  • Вопрос задан
  • 3216 просмотров
Решения вопроса 1
mejedi
@mejedi
Проверьте непосредственно в gdb, чтобы исключить проблемы со стороны IDE.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
DmZ
@DmZ
1. Без отладочной информации IDE просто не сможет привязать точку исполнения к исходникам, т.е. трейсить визуально программу вы не сможете. Отладочную инфу следует добавить.
2. Попробуйте поставить брейкпоинт после dlopen() плагина, а после этого ставить брейкпоинт на функцию в плагине. Так как до dlopen() gdb просто не увидит символов которые загружаются плагином.
Ответ написан
@EaS
Точно не уверен, но может после dlopen посмотреть как мапится dll-ка в память, и подгрузить отладочную информацию, примерно так: sourceware.org/glibc/wiki/Debugging/Loader_Debugging
Начинать читать примерно с info proc mapping.

НО! я почти уверен, что это будет не оптимальный способ, и можно сделать проще.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы