Сейчас на форуме: -Sanchez- (+7 невидимых)

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

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

Создано: 01 сентября 2016 13:25 · Поправил: AcidFlower
· Личное сообщение · #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?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

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

Не надо создавать ещё один топик с тем же содержанием, что и прошлый.


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