Rou1997
@Rou1997

Как с помощью gdb отлаживать приложения Android с нативными библиотеками (NDK)?

Использую Genymotion, стало быть, права su.
Приложение запустил.
В adb shell'е запустил gdb-server, сделал attach к PID'у приложения.
gdb запустил, вызываю target remote. Связь есть, попробовал команду continue - она работает ("зависшее" приложение перестает "не отвечать", продолжает выполняться, все верно).

Но никак не могу собственно загрузить библиотеку (*.so), чтобы был доступен список функций (info functions) и чтобы можно было ставить точки останова, то есть не могу "объяснить" gdb, что мне нужна именно эта библиотека, их ведь может быть несколько в одном приложении и в одной сессии gdbserver.
Проблема очень проста, и во всех туториалах вроде описан процесс, но везде по-разному и ничего не получается.

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

Еще пробовал так (по этому туториалу):
gdb D:\путь-на-компьютере\libTest.so
При этом библиотека вроде бы загружается, но она загружается не из памяти телефона, а собственно с компьютера, поэтому info functions возвращает адреса не в памяти процесса приложения, а в файле .so, и соответственно, поставить breakpoint'ы я не могу.

Как решить проблему?
Или, может быть, использовать какой-нибудь GUI?

Меня именно отладка без исходников интересует.
  • Вопрос задан
  • 331 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы