Android Studio for Platform (ASfP) udostępnia zaawansowany debuger, który umożliwia:
- Wybierz urządzenie, na którym chcesz debugować.
- Ustawiaj punkty przerwania w kodzie Java, Kotlin, C/C++ i Rust.
- Sprawdzaj zmienne i obliczaj wyrażenia w czasie działania.
Zanim użyjesz debugera, musisz wgrać kompilację na urządzenie lub emulator.
Debugowanie procesu aplikacji (Java/Kotlin)
Aby debugować proces aplikacji w Javie lub Kotlinie:
Ustawiaj punkty przerwania w kodzie Java lub Kotlin w ASfP.
W menu wybierz Run > Attach Debugger to Android Process (Uruchom > Dołącz debuger do procesu Androida).
W oknie Wybierz proces sprawdź, czy Typ debugowania jest ustawiony na Tylko Java.
Wybierz urządzenie z listy.
Wybierz konkretny proces aplikacji, który chcesz debugować.
Kliknij OK.
Korzystaj z aplikacji na urządzeniu, aby osiągnąć punkty przerwania.
Debugowanie procesu systemowego (C/C++)
Aby debugować proces systemowy napisany w języku C lub C++:
Sprawdź, czy masz tylko jedno urządzenie lub emulator.
Otwórz terminal i uruchom polecenie
adb rootw katalogu głównym wyewidencjonowanego kodu AOSP:bash adb root
Ustawiaj punkty przerwania w kodzie C/C++ w ASfP.
W menu wybierz Run > Attach Debugger to Android Process (Uruchom > Dołącz debuger do procesu Androida).
W oknie Wybierz proces zmień Typ debugowania na Tylko natywny lub Podwójny (Java + natywny).
Aby zobaczyć procesy systemowe, zaznacz pole Pokaż wszystkie procesy.
Wybierz urządzenie z listy.
Wybierz konkretny proces systemowy, który chcesz debugować (np.
surfaceflingerlubsystem_server).Kliknij OK.
Wejdź w interakcję z urządzeniem, aby osiągnąć punkty przerwania.
Debugowanie kodu w Rust
ASfP obsługuje debugowanie kodu w Rust przy użyciu protokołu Debug Adapter Protocol (DAP) z LLDB. W tej sekcji opisujemy, jak skonfigurować CodeLLDB jako serwer adaptera debugowania i debugować kod Rust na hoście i urządzeniu z Androidem.
Konfigurowanie CodeLLDB jako serwera adaptera debugowania
Utwórz nową konfigurację uruchamiania i debugowania Debug Adapter Protocol:
- W menu wybierz Uruchom > Edytuj konfiguracje.
- Kliknij przycisk +.
- Wybierz Debug Adapter Protocol (Protokół adaptera debugowania).
Na karcie serwera kliknij Utwórz nowy serwer.
W nowo otwartym oknie dialogowym kliknij Wybierz szablon i wybierz z listy CodeLLDB.
Po wybraniu szablonu CodeLLDB nowy serwer zostanie dodany z wstępnie zdefiniowaną konfiguracją.
- Włącz śledzenie szczegółowe, wybierając Szczegółowe w menu Śledzenie.
- Dodaj zmienną środowiskową, która określa ścieżkę do
lldb-serverw wstępnie skompilowanych plikach źródłowych Androida:
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- Nie zmieniaj sekcji
<<insert base directory>>.
Debugowanie plików binarnych Rust na hoście
- Otwórz kartę Configuration (Konfiguracja) w konfiguracji protokołu adaptera debugowania Uruchom/Debuguj.
- Wybierz Uruchom jako Tryb debugowania.
- Zaktualizuj katalog roboczy i wybierz plik binarny, który chcesz debugować.
- Aby zapisać konfigurację, kliknij OK.
- Rozpocznij sesję debugowania, klikając ikonę Debuguj obok konfiguracji.
Przy pierwszym uruchomieniu tego polecenia zostanie pobrany program CodeLLDB. W konsoli powinny być widoczne ślady DAP. Punkty przerwania ustawione w kodzie Rust powinny być osiągane zgodnie z oczekiwaniami.
Debugowanie plików binarnych Rust na urządzeniu z Androidem (tryb dołączania)
Znajdź identyfikator PID: określ identyfikator procesu (PID) aplikacji, którą chcesz debugować na urządzeniu z Androidem.
Uruchom serwer lldb na urządzeniu: w katalogu głównym drzewa źródłowego Androida uruchom skrypt
lldbclient.py, zastępując<PID>identyfikatorem procesu:lldbclient.py --setup-forwarding vscode-lldb -p <PID>Ten skrypt przesyła prawidłowy plik
lldb-serverna urządzenie, uruchamia go, konfiguruje przekierowanie portów (port hosta 5039 na urządzenie) i wyświetla konfigurację JSON DAP potrzebną w kolejnych krokach. Nie zamykaj tego terminala.Uruchom adapter debugowania CodeLLDB na hoście:
- Przejdź do katalogu rozszerzenia CodeLLDB (domyślnie:
~/.lsp4ij/dap/codelldb/extension/adapter). - Ustaw wymagane zmienne środowiskowe i uruchom serwer adaptera, zastępując parametry
REPO_ROOTiCLANG_VERSIONwartościami określonymi podczas konfiguracji serwera:
# 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- Przejdź do katalogu rozszerzenia CodeLLDB (domyślnie:
Skonfiguruj klienta ASfP DAP:
- Wróć do konfiguracji uruchamiania i debugowania protokołu adaptera debugowania w ASfP.
- Kliknij kartę Konfiguracja.
- Ustaw Tryb debugowania na Dołącz.
- W polu Adres ustaw
localhost. - Ustaw Port na
1234. - Wklej dane wyjściowe JSON z polecenia
lldbclient.py(krok 2) w polu Parametry DAP (JSON).
Aby rozpocząć sesję debugowania, kliknij Debuguj.
Rozwiązywanie problemów
- Jeśli zobaczysz błąd
error: Connection shut down by remote side while waiting for reply to initial handshake packet, zakończ bieżącą sesję debugowania i uruchom ponownielldb-serverna urządzeniu oraz adapter CodeLLDB na hoście.