вторник, 22 ноября 2011 г.

Отладка приложений в Android с помощью gdbserver

Это руководство может быть полезным тем, кто собрал на своей машине платформу 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 ❻
  1. Запускаем gdbserver на порту 5039. Параметр --attach заставляет его подключиться к запущенному процессу с PID = 2055. Чтобы узнать PID подопытного процесса, пишем "adb shell ps"
  2. Перебрасываем порт 5039 на устройстве на локальный порт компьютера, с которого производятся команды
  3. Запускаем gdb. Переменная CROSS_COMPILE должна указывать на gdb для архитектуры целевого устройства (обычно это ARM). Нужный нам gdb можно найти в папке $DROID/prebuilt/linux-x86/toolchain/arm-eabi*
  4. Теперь выполняем команду GDB -- просим его подключиться к локальному порту 5039 (подключение подхватит ADB и соединит нас с портом 5039 устройства, на котором висит gdbserver)
  5. Указываем папку, где можно взять отладочные символы. В нашем случае они указаны только для динамических библиотек. 
  6. Последняя команда загружает символы. На этом этапе мы готовы к работе. Пишем continue и/или ставим brakepoints!

Комментариев нет:

Отправить комментарий