Android Studio for Platform (ASfP) предоставляет мощный отладчик, который позволяет:
- Выберите устройство для отладки.
- Установите точки останова в своем коде на Java, Kotlin, C/C++ и Rust.
- Проверяйте переменные и оценивайте выражения во время выполнения программы.
Перед использованием отладчика необходимо прошить собранную программу на устройство или эмулятор.
Отладка процессов приложения (Java/Kotlin)
Для отладки процесса Java- или Kotlin-приложения:
Установите точки останова в вашем коде на Java или Kotlin с помощью ASfP.
Выберите в меню пункт «Выполнить» > «Подключить отладчик к процессу Android» .
В диалоговом окне «Выбор процесса» убедитесь, что для типа отладки установлено значение «Только Java» .
Выберите своё устройство из списка.
Выберите конкретный процесс приложения, который вы хотите отладить.
Нажмите ОК .
Взаимодействуйте с приложением на вашем устройстве, чтобы достичь контрольных точек.
Отладка системных процессов (C/C++)
Для отладки системного процесса, написанного на C или C++:
Убедитесь, что у вас запущено только одно устройство или эмулятор.
Откройте терминал и запустите
adb rootиз корневой директории вашей копии AOSP:bash adb root
Установите точки останова в вашем коде на C/C++ с помощью ASfP.
Выберите в меню пункт «Выполнить» > «Подключить отладчик к процессу Android» .
В диалоговом окне «Выбор процесса» измените тип отладки на «Только нативная отладка» или «Двойная (Java + нативная)» .
Установите флажок «Показать все процессы» , чтобы увидеть системные процессы.
Выберите своё устройство из списка.
Выберите конкретный системный процесс, который вы хотите отладить (например,
surfaceflingerилиsystem_server).Нажмите ОК .
Взаимодействуйте с устройством, чтобы достичь контрольных точек.
отладка Rust
ASfP поддерживает отладку Rust с использованием протокола отладочного адаптера (DAP) с LLDB. В этом разделе описано, как настроить CodeLLDB в качестве сервера отладочного адаптера и отлаживать код Rust на хосте и на устройстве Android.
Настройте CodeLLDB в качестве сервера отладочного адаптера.
Создайте новую конфигурацию запуска/отладки протокола отладочного адаптера :
- Выберите в меню «Выполнить» > «Изменить настройки» .
- Нажмите кнопку «+» .
- Выберите протокол отладочного адаптера .
На вкладке «Сервер» нажмите «Создать новый сервер» .
В открывшемся диалоговом окне нажмите «Выбрать шаблон» и выберите CodeLLDB из списка.
После выбора шаблона CodeLLDB новый сервер добавляется с предопределенной конфигурацией.
- Включите подробную трассировку, выбрав пункт «Подробная трассировка» в раскрывающемся списке «Трассировка» .
- Добавьте переменную среды, указывающую путь к
lldb-serverв предварительно собранных исходных файлах Android:
LLDB_DEBUGSERVER_PATH=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/runtimes_ndk_cxx/x86_64/lldb-server ``` Replace `REPO_ROOT` with the absolute path to your Android source checkout. To find `CLANG_VERSION`, run the `get_clang_version.py` script from the root of your Android source tree: ```bash ./build/soong/scripts/get_clang_version.py- Не изменяйте раздел
<<insert base directory>>.
Отладка бинарных файлов Rust на хосте
- Откройте вкладку «Конфигурация» в настройках запуска/отладки протокола отладчика.
- Выберите «Запуск» в качестве режима отладки .
- Обновите рабочий каталог и выберите двоичный файл, который хотите отладить.
- Нажмите ОК , чтобы сохранить конфигурацию.
- Чтобы начать отладку, нажмите на значок «Отладка» рядом с файлом конфигурации.
При первом запуске CodeLLDB загрузится. В консоли должны отобразиться трассировки DAP. Точки останова, установленные в вашем коде Rust, должны срабатывать, как и ожидалось.
Отладка бинарных файлов Rust на устройстве Android (режим подключения).
Найдите PID: Определите идентификатор процесса (PID) приложения, которое вы хотите отлаживать на устройстве Android.
Запустите lldb-server на устройстве: из корневой папки вашей папки с исходным кодом Android запустите скрипт
lldbclient.py, заменив<PID>на идентификатор процесса:lldbclient.py --setup-forwarding vscode-lldb -p <PID>Этот скрипт отправляет на устройство необходимый
lldb-server, запускает его, настраивает переадресацию портов (порт хоста 5039 на устройство) и выводит конфигурацию DAP в формате JSON, необходимую для следующих шагов. Держите этот терминал открытым.Запустите отладочный адаптер CodeLLDB на хосте:
- Перейдите в каталог расширений CodeLLDB (по умолчанию:
~/.lsp4ij/dap/codelldb/extension/adapter). - Установите необходимые переменные среды и запустите сервер адаптера, заменив значения
REPO_ROOTиCLANG_VERSIONопределенные в настройках сервера:
# Sets PYTHONHOME env variable export PYTHONHOME=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3 # Tell the dynamic linker where to find python libs export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3/lib # Starts the CodeLLDB Debugger Adapter server on port 1234 ./codelldb --liblldb REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/lib/liblldb.so --port 1234- Перейдите в каталог расширений CodeLLDB (по умолчанию:
Настройте клиент ASfP DAP:
- Вернитесь к настройкам запуска/отладки протокола отладчика в ASfP.
- Выберите вкладку «Конфигурация» .
- Установите режим отладки на «Подключить» .
- Установите адрес на
localhost. - Установите порт на
1234. - Вставьте JSON-вывод команды
lldbclient.py(шаг 2) в поле «Параметры DAP (JSON)» .
Нажмите кнопку «Отладка» , чтобы начать сеанс отладки.
Поиск неисправностей
- Если вы видите
error: Connection shut down by remote side while waiting for reply to initial handshake packet, завершите текущую сессию отладки и перезапуститеlldb-serverна устройстве и адаптер CodeLLDB на хосте.