GDB, как установить точку останова в динамической библиотеке, открытой Dlopen
Во второй половине дня, Everbody. У меня есть приложение 'test', скомпилированное main.c. Динамическая библиотека 'libtest.so', которая компилируется test.cpp с '-g'. В main.c я вызываю libtest.so с помощью dlopen. И теперь я хочу установить точку останова в test.cpp, но GDB никогда не достигнет этого. Я делаю следующее:
GDB./test -d / home / lcl / test
break test.cpp: 35
бежать
Кто-нибудь может дать мне несколько советов, спасибо!
1 ответ
Вы должны сначала убедиться, что dlopen
на самом деле удается (скорее всего, это не так).
Для этого:
- установить точку останова в
main.c
послеdlopen
, - подтвердить, что возвращенный дескриптор не
NULL
В этот момент GDB должен был загрузить символы для libtest.so
, а также libtest.so
должен появиться в info shared
Вывод ГБД.
Если все выглядит хорошо, info break
должен показывать активную точку останова в test.cpp:35
по какому-то адресу. Если эта точка останова никогда не достигнута, вполне вероятно, что вы никогда не выполняете эту строку кода.