Необходимо рассмотреть два случая (и ваш вопрос не проясняет, какой у вас случай):
- Ваш исполняемый файл напрямую связан с общей библиотекой:
это означает, что GDB
будет «видеть» символы (и источники) из общей библиотеки, когда вы остановитесь на main
- ваш исполняемый файл динамически загружает общую библиотеку (например, через dlopen
):
в этом случае GDB
не увидит вашу общую библиотеку до тех пор, пока не завершится dlopen
.
Поскольку вы не можете видеть символы, когда останавливаетесь на главном, я полагаю, у вас есть второй случай.
Вы можете сделать "set stop-on-solib-events 1"
в приглашении (gdb)
, и GDB
будет останавливаться каждый раз, когда новая общая библиотека загружается (или выгружается).
Вы можете увидеть, какие библиотеки GDB
«знает» об этом, с помощью команды info shared
.
Просто подождите, пока вы не увидите вашу целевую библиотеку в этом списке, прежде чем пытаться установить в ней контрольные точки.