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

бежать

Кто-нибудь может дать мне несколько советов, спасибо!

0

Решение

Вы должны сначала убедиться, что dlopen на самом деле удается (скорее всего, это не так).

Для этого:

  • установить точку останова в main.c после dlopen,
  • подтвердить, что возвращенный дескриптор не NULL

В этот момент GDB должен был загрузить символы для libtest.so, а также libtest.so должен появиться в info shared Вывод ГБД.

Если все выглядит хорошо, info break должен показывать активную точку останова в test.cpp:35 по какому-то адресу. Если эта точка останова никогда не достигнута, скорее всего, вы никогда не выполняете эту строку кода.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector