eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: subzero (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Отладка SO-библиотек Android с помощью gdb без исходников
Посл.ответ Сообщение

Ранг: 2.3 (гость)
Статус: Участник

Создано: 1 сентября 2016 13:25 · Поправил: 1 сентября 2016 14:07 AcidFlower New!
Цитата · Личное сообщение · #1

Работаю на Genymotion, соответственно права полные (рут).
Все делаю по туториалам.
1. Запускаю подопытное приложение, при этом входящая в него библиотека (lib***.so) загружается с помощью System.loadLibrary и ее функции работают.
2. Открываю adb shell, запускаю gdbserver, аттачу его к PID'у подопытного приложения. Все ОК.
3. Затем adb forward, затем gdb, в его консоли подключаюсь target remote. Все ОК.
4. Пробую команду continue - приложение перестает "висеть" под отладкой и продолжает выполняться. Все ОК.
5. Но вот, собственно, загрузить из библиотеки символы у меня не получается. А из-за этого я не могу вызвать info functions и не могу поставить брекпоинты.
Я просто не могу "объяснить" gdb, что мне нужна именно такая-то библиотека, чтобы он загрузил из нее символы и я мог с ней работать.

Пробовал по разным туториалам, по-разному. Например, пробовал gdb запускать так:
Code:
  1. gdb D:\Путь-на-моем-компе\libTest.so

Вроде бы все нормально, однако когда вызываю info functions, то получаю адреса не в памяти, а в самой библиотеке на компе, соответственно брекпоинты не ставятся.

На Windows я это делал с помощью symbol-file remote:test.exe которую выполнял после подключения (target remote).
Однако с Android такое не получается, эта команда не поддерживается.

Тогда я попробовал set solib-search-path. После нее, как я понимаю, надо вызвать sharedlibrary (не путать с info sharedlibrary), иначе ничего не загрузится.
1) Правильно понимаю?
2) Не совсем понял, что собственно передавать в нее - что именно надо pull'ить, и какие пути указывать, если бряки я хочу поставить на функции библиотеки, входящей в мое приложение, а не андроидовских.
Короче, прошу рассказать, как вы делаете, и желательно поподробнее. Заранее спс.

И еще один вопрос:
А может, дело просто в том, что я использую gdb из MinGW, вместо родного тулчайна? Просто с родным не получалось вообще, и с ndk-gdb тоже не заладилось. Может ли кто точно сказать - необходим ли именно тулчайн/ndk-gdb для отладки на Android?


Ранг: 1964.9 (!!!!)
Статус: Модератор
retired

Создано: 1 сентября 2016 13:40 New!
Цитата · Личное сообщение · #2

Не надо создавать ещё один топик с тем же содержанием, что и прошлый.
 eXeL@B —› Основной форум —› Отладка SO-библиотек Android с помощью gdb без исходников
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS