Как получить контрольную точку в собственном коде 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 Экспериментальный плагин