Android Studio for Platform (ASfP) интегрирует многоязыковую отладку платформы вокруг вкладки Attach (Подключить) в окне инструмента Debug (Отладка):
- Выберите Run > Attach to Android Process (Выполнить > Подключиться к процессу Android) (Control+Alt+A), чтобы подключить отладчик Java, отладчик машинного кода (встроенный LLDB) или оба отладчика к любому запущенному приложению или системному процессу на физическом устройстве или виртуальном устройстве Cuttlefish.
- Проверьте каждую загруженную общую библиотеку (
.so) и ее восьмисимвольный идентификатор сборки ELF в панели Библиотеки перед подключением. Значки с галочками подтверждают соответствие локальных символов отладки в разделеout/target/product/<device>/symbols. - Управляйте предварительными условиями для устройства с помощью панели инструментов: отфильтруйте результаты с помощью Показать системные процессы, нажмите Устройство с root-доступом, чтобы запустить
adb root(при этом будет отображаться Устройство с root-доступом), и нажмите Включить JDWP, чтобы включить JDWP в сборкахuserdebug. - Устанавливайте условные точки останова и точки останова исключений, просматривайте встроенные значения переменных в редакторе, используйте пропуск кадра и умный шаг с заходом, а также проверяйте структурированные типы C++ и Rust во время выполнения.
Перед использованием отладчика создайте целевой объект lunch, чтобы существовал локальный индекс символов out/target/product/<device>/symbols/.build-id, и прошейте или запустите соответствующий образ устройства.
Отладка кода на Java и на Java и нативном языках
Чтобы отладить приложение на Java или Kotlin, системное приложение (например, com.android.messaging, "Настройки" или SystemUI) или процесс, вызывающий код JNI, C++ или Rust, выполните следующие действия:
- Установите точки останова в исходных файлах Java, Kotlin, C, C++ или Rust.
- Выберите Run > Attach to Android Process (Выполнить > Подключиться к процессу Android) (Control+Alt+A). ASfP откроет закрепленную вкладку Attach (Прикрепить) в окне инструмента Debug (Отладка).
- Выберите целевое устройство в раскрывающемся меню. Если JDWP не включен в сборке
userdebug, нажмите Enable JDWP (Включить JDWP). ASfP установитpersist.debug.dalvik.vm.jdwp.enabled=1и перезагрузит устройство. Если кнопка активна, на ней написано JDWP enabled (JDWP включен), а при нажатии правой кнопкой мыши появляется действие Disable JDWP (Отключить JDWP). - Выберите целевой процесс в таблице (процессы Java и ART отмечены значком чашки кофе).
- В нижней части вкладки Присоединить выберите Отладчик Java, Отладчик Native или оба варианта. Если выбрать оба варианта, в окне инструментов Отладка откроются две связанные вкладки:
<process> (<pid>)для встроенного отладчика LLDB и<process> (<pid>)-jdwpдля Java. Их жизненные циклы связаны, поэтому при остановке одного сеанса останавливаются оба. - Нажмите Присоединить и взаимодействуйте с приложением на устройстве, чтобы достичь точек останова.

Отладка системных процессов (C и C++) и проверка символов
Чтобы отладить системные демоны, HAL или системные сервисы (например, android.hardware.bluetooth-service.cuttlefish, surfaceflinger или audioserver), выполните следующие действия:
- Откройте Run > Attach to Android Process (Выполнить > Подключиться к процессу Android) (Control+Alt+A). Если на панели инструментов отображается Root Device (Устройство с настроенным root-доступом), нажмите на нее, чтобы ASfP запустил
adb rootи показал Device is rooted (Устройство с настроенным root-доступом). - На верхней панели инструментов выберите Показать системные процессы и отфильтруйте нужный процесс.
- Проверьте локальные символы отладки на панели "Библиотеки". При выборе процесса таблица Библиотеки заполняется всеми общими библиотеками ELF (
.so), загруженными в процесс, и первыми восемью шестнадцатеричными символами идентификатора сборки ELF. ASfP сопоставляет каждый идентификатор сборки сout/target/product/<device>/symbols(symbols/.build-idтребуется для разрешения библиотек внутри APEX):- У проверенных библиотек есть значок с галочкой. Наведите указатель на любую строку с разрешенным конфликтом, чтобы посмотреть полный локальный путь к символу
.debug. - Для неразрешенных библиотек без соответствующих локальных символов отображается значок предупреждения.
- У проверенных библиотек есть значок с галочкой. Наведите указатель на любую строку с разрешенным конфликтом, чтобы посмотреть полный локальный путь к символу
- Обнаружение процессов, не связанных с Java. Если вы выберете процесс C++ или Rust (отмечен значком шестиугольника
C), ASfP скроет отладчик Java и покажет сообщение Отладка Java недоступна, так как это не процесс Java, оставив флажок Нативный отладчик установленным. - Установите точки останова в исходных файлах C, C++ или Rust, нажмите Присоединить и запустите путь выполнения на устройстве.

Отладка кода Rust
ASfP отлаживает код платформы Rust с помощью того же встроенного отладчика LLDB, который используется для C и C++. Внешний адаптер или настройка сервера вручную не требуются: ASfP использует lldb-dap из своего встроенного набора инструментов и автоматически загружает Rust pretty-printers из предварительно созданных файлов AOSP, чтобы стандартные типы, такие как String, Vec, HashMap и Option, отображали структурированные значения на панели Variables (Переменные).
Как подключиться к запущенному процессу Rust на устройстве
Выполните инструкции из раздела Отладка системного процесса (C и C++): откройте Run > Attach to Android Process (Выполнить > Подключиться к процессу Android), убедитесь, что Device is rooted (Устройство с правами root) и локальные символы отмечены флажком на панели Libraries (Библиотеки), оставьте флажок Native debugger (Встроенный отладчик) установленным и нажмите Attach (Подключиться). Фреймы стека Rust и C или C++ отображаются вместе в одном сеансе отладки.
Как отлаживать модуль rust_test или rust_test_host
- Откройте файл
Android.bp, в котором объявлена цельrust_testилиrust_test_host, и нажмите на значок Выполнить на полях рядом с типом модуля. - Выберите Debug '<ModuleName>' (Отладка <ModuleName>). ASfP создаст целевой объект, запустит двоичный файл теста в LLDB на хост-машине или подключенном устройстве и приостановит выполнение на точках останова Rust.
- Чтобы отладить отдельную функцию тестирования или настроить команды запуска LLDB, откройте Run > Edit Configurations (Запустить > Изменить конфигурации), выберите сгенерированную конфигурацию Soong Test (Тест Soong) и задайте Method (Метод) или разверните параметры Debugger (Отладчик). Подробнее о параметрах конфигурации Soong Test рассказывается в статье Как тестировать код платформы с помощью atest.
