Как получить контрольную точку в собственном коде NDK и отладить собственный код в Android Studio?
Я разрабатываю приложение для Android с помощью NDK. У меня есть два проекта. Один из них - для моей родной библиотеки, которая использует NDK и генерирует файл .so.
Я использую Android Studio, но отключая автоматическую сборку и включенную сборку с использованием ndk-build. Я использую Windows 7.
Теперь, после генерации файла .so, я копирую те в моем основном проекте приложения, который также использует ndk-build для компиляции функций JNI, в которых я звоню в функции моей библиотеки. Надеюсь, я до сих пор чист. Если нет, то я дам более подробную информацию по запросу.
Теперь я запускаю свое приложение на устройстве с помощью Android Studio, и могу поставить точку останова в java-коде и отлаживать этот код, но я не могу отлаживать вызов JNI, а также собственный код, который у меня есть в отдельном проекте. Мне нужно отлаживать внутри моего библиотечного кода. Так есть ли способ достичь этого?
Я видел VisualGDB, но он оплачивается. Поэтому дайте мне знать, есть ли какая-либо альтернатива заполнению моих требований к отладке. Я искал много, но не получил никакого конкретного решения.
Я могу увидеть вариант в Android Studio для присоединения к процессу андроида, где я могу видеть свое запущенное устройство, но я не уверен, как его использовать, чтобы я мог отлаживать собственный код библиотеки (который находится в отдельном проекте без какой-либо активности).
Сообщите мне, требуется ли более подробная информация
Ответы
Ответ 1
В предварительном просмотре Android Studio 2.0 процесс немного отличается (как мне кажется проще):
- Установите "LLDB" : зайдите в Tools- > Android- > SDK Manager, затем зайдите на вкладку "SDK Tools" и не забудьте проверить "LLDB" (ближе к концу списка обычно)
- Выберите вариант "Отладка" . В левом нижнем углу AS нажмите "Build Variants", вариант debug по умолчанию называется "Debug"
- Выберите собственную конфигурацию: левая сторона кнопки запуска (зеленый треугольник). Собственная конфигурация по умолчанию называется "app-native"
- Установить точку останова
- Запустите приложение в отладке, щелкнув небольшую ошибку в правой части кнопки запуска.
Если это не сработает, убедитесь, что ваша собственная конфигурация имеет тип отладки "Гибрид" . Справа от кнопки воспроизведения щелкните маленький треугольник, выберите "Изменить конфигурации", выберите вашей "конфигурации на основе приложения", зайдите на вкладку "Отладчик" и выберите "Тип отладки: гибрид".
Ответ 2
Android Studio 1.3+ поддерживает собственную отладку.
Чтобы настроить его, выполните следующие действия:
- Измените gradle -wrapper.properties, local.properties и оба файла build.gradle, как показано в это руководство
- Синхронизация gradle
-
Создайте и выберите новую конфигурацию сборки:
Нажмите на кнопку "Выполнить" рядом с кнопкой "Пуск" ) → "Редактируйте конфигурации", нажмите "плюс", выберите "Основатель Android", заполните параметры справа (я использовал LLDB на вкладке отладчика), и вы должны быть установлены.
-
Установить точки останова в С++
- Нажмите кнопку отладки и будьте терпеливы (иногда отладчик занимает некоторое время)
Мне удалось отладить собственный код под Lubuntu 14.04 с Android Studio 1.3 (стабильный канал). Хотя другие предположительно были успешными в Windows, я не смог отлаживать изначально в Windows 8.1 (я пробовал с Android Studio 1.3, 1.3.2 и 1.4 предварительный просмотр 3).
Обновление
Android Studio 1.4 Beta только что вышел. Я протестировал его и смог отлаживать изначально на Windows 8.1.
Ответ 3
Мне удалось установить точки останова и перейти в собственный код, но только тогда, когда были выполнены следующие условия:
- Сгенерированные исходные файлы .so файлов сохраняли свои символы отладки
- Были предоставлены источники (см. меню "Свойства библиотеки" ).
- Я установил конфигурацию run/build для использования собственного отладчика (как описано здесь)
Он работает для меня прямо сейчас в Android Studio 1.5, используя Gradle Экспериментальный плагин