Отладка so-библиотеки, загружаемой посредством dlopen()?
CentOS 6.2, IDE Qt Creator 2.4.1 (используется GNU toolchain).
Решил прикрутить к своему fastcgi-серверу тривиальную систему плагинов. Плагины загружаются из каталога plugins/ посредством библиотечных функций типа dlopen().
Как отлаживать плагин? Ставлю точку останова, запускаю в отладке сервер — точка проигнорирована. Проблемы gdb? Проблемы моих рук или межушного ганглия?
Пока предполагаю следующие пути:
> возможно, не предоставляю отладочной информации, поэтому gdb плевать
> логгировать по старинке
> не пользоваться текущей IDE (там частенько gdb отваливается)
Заранее спасибо за адекватные ответы на, возможно, глупый вопрос.
1. Без отладочной информации IDE просто не сможет привязать точку исполнения к исходникам, т.е. трейсить визуально программу вы не сможете. Отладочную инфу следует добавить.
2. Попробуйте поставить брейкпоинт после dlopen() плагина, а после этого ставить брейкпоинт на функцию в плагине. Так как до dlopen() gdb просто не увидит символов которые загружаются плагином.
Второй вариант не сработал, к сожалению. Думаю, таки Qt Creator — не лучший способ для нетривиальной отладки слабо зависящих от Qt Framework приложений.
Точно не уверен, но может после dlopen посмотреть как мапится dll-ка в память, и подгрузить отладочную информацию, примерно так: sourceware.org/glibc/wiki/Debugging/Loader_Debugging
Начинать читать примерно с info proc mapping.
НО! я почти уверен, что это будет не оптимальный способ, и можно сделать проще.