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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.