Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> gdb и shared library, отладка динамической либы 
:(
    Опции темы
Dude03
Дата 26.1.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.4.2006

Репутация: нет
Всего: 6



Возникла такая проблема : нужно отладить шаред либу. Скомпилил, отладочную инфу подрубил.
Препдположим, что host-prog - программа, shared.so - shared library
Вот:
Код

(gdb) file host-prog
Reading symbols from host-prog...
(no debugging symbols found)...done.
(gdb) symbol-file shared.so
Reading symbols from shared.so...done.
(gdb) b Func
(gdb) Cannot access memory at address 0x1000120a # хмм ну в принципе ясно - там же ничего еще нету=(
load shared.so
(gdb) You can't do that when your target is `exec' # не могу загрузить
add-shared-symbol-files shared.so
(gdb) b Func
(gdb) Cannot access memory at address 0x1000120a
(gdb) load shared.so
(gdb) You can't do that when your target is `exec'

Что мне сделать, чтобы отладить?
PS. 0x1000120a  - сильно на адреса не смотрите. Все нормально с ними.
PM MAIL   Вверх
kirjanov
Дата 26.1.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: нет
Всего: 15



Dude03, 
напиши имя функции, на которую бряк ставишь, большими буквами
PM MAIL   Вверх
Dude03
Дата 26.1.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.4.2006

Репутация: нет
Всего: 6



Это просьба или ответ?=)
С бряком на функцию все нормально. Тут же дело не в этом.
Ставлю бряк на функцию Func. Почитал хелп про функцию load. Она мне подходит - но она не хочет грузить файл
Код

(gdb) load shared.so
(gdb) You can't do that when your target is `exec'

PM MAIL   Вверх
kirjanov
Дата 26.1.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: нет
Всего: 15



load будет работать при target remote, а у тебя target exec
ты библиотеку явно компонуешь или используешь ее через dlopen()?

Это сообщение отредактировал(а) kirjanov - 26.1.2007, 18:33
PM MAIL   Вверх
Dude03
Дата 26.1.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.4.2006

Репутация: нет
Всего: 6



dlopen. Программа подгружает ее динамически.
PS. эта либа - плагин

Это сообщение отредактировал(а) Dude03 - 26.1.2007, 19:16
PM MAIL   Вверх
bilbobagginz
Дата 27.1.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 28
Всего: 317



для того, чтобы gdb мог попробовать и зарезолвить символы, поставь breakpoint после вызова dlopen().
а дальше всё должно работать, если все нужные сырцы читабельны и либа скомпилена с отладочной информацией.

если ты устанавливаешь брейкпойнты до вызова dlopen() [ напр. из скрипта gdb ], то выйдут ошибки. тут не автоматизируешь... или сделай так:
в коде добавь ярлык "после длопен()"
Код

ptr=dlopen(blablablablabla,flags));
if (!ptr) {
/** oshibka */
}
posle-dlopen:
/** 
 the rest of the code
**/


gdb скрипт:

Код

break posle-dlopen;
continue;
break <внутренние символы из либы>;



Удачи.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Dude03
Дата 27.1.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.4.2006

Репутация: нет
Всего: 6



Хммм , жаль, что по другому нельзя. В Visual Studio я мог вполне нормально поставить бряк внутри длл и потом спокойно отладживать. Еще одна проблема - прога которая подгружает длл не имеет сорсов. Конечно мне несложно найти отреверсить, но все же.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.