как установить точку останова на функции в общей библиотеке, которая не была загружена в gdb

У меня есть общая библиотека libtest.so который будет загружен в основное использование программы dlopen. Функция test() находитесь в libtest.so и будет назван в основной программе через dlsym. Есть ли любой способ, на котором я мог настроить точку останова test?

Обратите внимание на то, что основная программа не была связана с libtest.so во время соединения времени. Иначе я должен смочь установить точку останова, хотя это - иск на рассмотрении. В моем случае, когда я делаю b test, gdb скажет мне Function "test" not defined.

14
задан pierrotlefou 15 April 2010 в 05:39
поделиться

1 ответ

На самом деле gdb должен сказать вам, что он может разрешить символ в будущем, когда будут загружены новые библиотеки:

(gdb) b test
Function "test" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (test) pending.
(gdb) r

И позже, когда объект .so будет загружен, он разрешит точку останова, например:

Reading symbols for shared libraries . done
Breakpoint 1 at 0xcafebebe
Pending breakpoint 1 - "test" resolved
14
ответ дан 1 December 2019 в 12:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: