Интеграция работы с нативным кодом на С/С++ для android в Eclipce (на примере, под Ubuntu). – часть 3
10/06/2011 Комментарии (17)
Настройка Eclipse для отладки нативного кода проекта.
1) Устанавливаем breakepoint после загрузки библиотеки и перед вызовом нативной функции, запускаем проект на отладку и ждем его остановки на breakepoint. Если хотите можно переключится и Debag перспективу, это сейчас не важно.
2) Запускаем терминал переходим в директорию Вашего проекта и вводим команду ndk-gdb. Данная команда запустила скрипт который сгенерировал сервер gbd отладчика в папке obj/local/armearbi. Теперь можно выйти из него в терминале.
3) Собственно теперь нам необходимо перейти в директорию obj/local/armearb проекта(хотя вроде уже там) и создать копию файла gdb.setup назвав ее gdb2.setup.
4) Теперь необходимо отредактировать файл наш gdb2.setup. А именно в нем просто удалить последнюю строчку: «target remote :5039». Эти параметры мы укажем позже при настройке Eclipce, там требуется.
5) Переходим в директорию с ndk и создаем в ней опять копию файла ndk-gdb назвав к примеру его ndk-gdb-eclipse.
6) Редактируем файл ndk-gdb-eclipse, нам необходимо удалить или закомментировать последнюю 581 строку скрипта чтобы конец файла приобрел к примеру следующий вид:
echo "file `native_path $APP_PROCESS`" >> $GDBSETUP
echo "target remote :$DEBUG_PORT" >> $GDBSETUP
if [ -n "$OPTION_EXEC" ] ; then
cat $OPTION_EXEC >> $GDBSETUP
fi
##$GDBCLIENT -x `native_path $GDBSETUP`
7) Настройка проекта Eclipse для отладки. Создаем новую Debug configuration, назвав ее как нибудь осмысленно (например «NativeExample native debug»). Совет: переименуйте отладочную конфигурацию для андроида тоже в что нибудь осмысленное.
На закладке main в поле С/С++ Aplication указываем путь к сгенерированому gdb приложению в папке проекта obj/local/armearbi – «app_process».
Необходимо также выбрать Standard Create Process Launcher нажав на синюю ссылку внизу окна Select other… .
В закладке Debugger в поле Debugger указываем gdbserver. В поле Stop on startup название нативной функции при входе в которую отладчик остановится, в нашем случае это Java_com_example_NativeLib_function.
В поле GDB debugger указываем путь к gdb для андроида ${ndk_dir}/ toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gdb. В поле GDB command line нам необходимо указать путь к созданному нами файлу gdb2.setup.
В закладке Connection выставляем TCP localhost 5039.
И на всякий случай проверяем что бы в закладке Common у Вас стояла галочка в Debug конфигурации.
Отладка проекта в Eclipse.
1) Ставим точку в Java коде проекта перед вызовом нативной функции после загрузки библиотеки, запускаем АНДРОИД конфигурацию для отладки и ждем остановки на breakpoint’е, переходим в Debug перспективу Eclipse.
2) Из терминала в директории проекта выполняем команду ndk-gdb-eclipse, которая запускает gdb сервер для нашего проекта
3) Переходим в Eclipse запускаем нативную конфигурацию для отладки: Стрелочка возле жука вниз и выбираем нужную нам конфигурациюв нашем случае «NativeExample native debug»
4) И жмем кнопку Resume (зеленую стрелочку) в Debug перспективе.
Все
Вас переключило в отладку нативного кода в самое начало функции как мы и хотели.
Теперь можно устанавливать в С/С++ breakpoint’ы и отлаживать нативный код.
Честно говоря когда была написана половина данной статьи нашел блог из которого почерпнул для себя много интересного. Часть этого вошло в статью
.









