LINUX.ORG.RU

gdb и разделяемые библиотеки


0

0
Нужно в программе найти ошибку. Программа разделена на две части, собственно выполняемую прогу и разделяемую библиотеку. И когда делаешь step на функции в основной программе, а она реализована в разделяемой библиотеки хотелось бы попасть на ее реализацию в отладчике. Пытался это сделать, но gdb начал ругаться. Помогите, пожалуйста.
anonymous
Для этого надо сделать статическую версию этой библиотеки ( не стрипованную ), слинковать с прогой и отлаживаться. Как отладишь - библиотеку собираешь как динамическую.
PETER ★★
()
Ответ на: комментарий от PETER
Да ну, ерунда какая. Выполняться должны все процедуры во всех библиотеках. А что GDB говорит? Если использовать команду stepi?
anonymous
()
Ответ на: комментарий от anonymous
Библиотеку-то поди собирал без отладочной информации?
Flogger_d
()
Ответ на: комментарий от PETER
Конечно бред
so - отлично отлаживаются
Компилишь с отладочной информацией, а потом gdb говоришь где лежат исходники
anonymous
()
Ответ на: комментарий от Darkman
Ну, может он не видит исходников. До этого я отлаживал проги используя gdb, которые исчепывались только одним каталогом. Здесь же разделяемая библиотека в одном каталоге, главная в другом, и еще есть куча всего в разных других каталогах. Я пока не очень разобрался, прога не моя, я ее русифицирую.

Так вот.

Как ему сказать что файлы находятся в таком-то и таком-то каталогах кроме текущего?

ЗЫ Компилирую я все с ключом -g, так что отладочная информация, по-моему скромному мнению, должна быть и разделяемой библ. и в испол. файле.

anonymous
()
Ответ на: комментарий от anonymous
info gdb:
команда
dir <path> добавляет каталог к списку каталогов исходников

чтобы каждый раз не набират эти команды, их можно записать в
~/.gdbinit
anonymous
()
Ответ на: комментарий от Darkman
2Darkman
>> Да и отладочная информация в общем не при чем...

И при чем же? Неужто я не могу отлаживать программу без отладнки?
anonymous
()
Ничего не понимаю. Проблема у меня явно не с отладочной информацией. Если ее нет, то gdb ругается. А так... Когда я говорю step на функции он пропускает эту функции и переходит к следущей строчке, не заходя в функции. stepi проводит же меня по всем кругам ада: по всем вызовам системных функций для работы с разделяеймой библеотекой, но саму функцию показывать отказывается.

Чтение документации не помогло.

Может кто-нибудь примерно описать, как у него получалось отлаживать разделяемую библеотеку?

anonymous
()
Ответ на: комментарий от PETER
Ну попробуй поставить брейкпоинт на эту функцию из библиотеки. Вообще, намного удобнее отлаживаться визуально, попробуй DDD - это более-менее сносная морда дла GDB.
Debugger
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.