Это руководство может быть полезным тем, кто собрал на своей машине платформу Android, запустил её на устройстве/эмуляторе и хочет отлаживать на ней родные приложения. Необходимость собственноручной компиляции андройда обусловлена тем, что в процессе сборки генерируются отладочные символы для всех исполняемых файлов и библиотек. Они складываются в директорию out/target/product/generic/symbols/*. Подцепив эти символы в GDB можно отлаживать любые системные сервисы/приложения/библиотеки.
adb shell gdbserver :5039 --attach 2055 & ❶ adb forward "tcp:5039" "tcp:5039" ❷ ${CROSS_COMPILE}gdb ❸ (gdb) target remote :5039 ❹ (gdb) set solib-search-path out/target/product/generic/symbols/system/lib ❺ (gdb) info sharedlibrary ❻
- Запускаем gdbserver на порту 5039. Параметр --attach заставляет его подключиться к запущенному процессу с PID = 2055. Чтобы узнать PID подопытного процесса, пишем "adb shell ps"
- Перебрасываем порт 5039 на устройстве на локальный порт компьютера, с которого производятся команды
- Запускаем gdb. Переменная CROSS_COMPILE должна указывать на gdb для архитектуры целевого устройства (обычно это ARM). Нужный нам gdb можно найти в папке $DROID/prebuilt/linux-x86/toolchain/arm-eabi*
- Теперь выполняем команду GDB -- просим его подключиться к локальному порту 5039 (подключение подхватит ADB и соединит нас с портом 5039 устройства, на котором висит gdbserver)
- Указываем папку, где можно взять отладочные символы. В нашем случае они указаны только для динамических библиотек.
- Последняя команда загружает символы. На этом этапе мы готовы к работе. Пишем continue и/или ставим brakepoints!
Комментариев нет:
Отправить комментарий