Android Studio for Platform (ASfP) integruje debugowanie platformy w wielu językach na karcie Dołącz w oknie narzędziowym Debugowanie:
- Wybierz Uruchom > Dołącz do procesu Androida (Control+Alt+A), aby dołączyć debugger Javy, debugger natywny (dołączony LLDB) lub oba te debuggery do dowolnej uruchomionej aplikacji lub procesu systemowego na urządzeniu fizycznym lub wirtualnym urządzeniu Cuttlefish.
- Sprawdź każdą wczytaną bibliotekę współdzieloną (
.so) i jej 8-znakowy identyfikator ELF Build ID w panelu Biblioteki przed dołączeniem – ikony z zaznaczeniem potwierdzają dopasowanie lokalnych symboli debugowania w sekcjiout/target/product/<device>/symbols. - Zarządzaj wymaganiami wstępnymi dotyczącymi urządzenia na pasku narzędzi: filtruj za pomocą opcji Pokaż procesy systemowe, kliknij Urządzenie z dostępem do roota, aby uruchomić
adb root(gdy ta opcja jest aktywna, wyświetla się komunikat Urządzenie ma dostęp do roota), i kliknij Włącz JDWP, aby włączyć JDWP w kompilacjachuserdebug. - Ustawiaj warunkowe i wyjątkowe punkty przerwania, wyświetlaj w edytorze wartości zmiennych wbudowanych, korzystaj z funkcji Drop Frame i inteligentnego Step Into oraz sprawdzaj w czasie działania programu strukturalne typy C++ i Rust.
Przed użyciem debugera skompiluj lunchelement docelowy, aby istniał lokalnyout/target/product/<device>/symbols/.build-id indeks symboli, a następnie wgraj lub uruchom pasujący obraz urządzenia.
Debugowanie w Javie oraz debugowanie w Javie i w kodzie natywnym
Aby debugować aplikację w Javie lub Kotlinie, aplikację systemową (np. com.android.messaging, Ustawienia lub SystemUI) albo proces wywołujący kod JNI, C++ lub Rust, wykonaj te czynności:
- Ustawiaj punkty przerwania w plikach źródłowych w językach Java, Kotlin, C, C++ lub Rust.
- Wybierz Uruchom > Dołącz do procesu Androida (Ctrl+Alt+A). ASfP otwiera przypiętą kartę Dołącz w oknie narzędzia Debugowanie.
- Wybierz urządzenie docelowe z menu. Jeśli JDWP nie jest włączony w przypadku kompilacji
userdebug, kliknij Włącz JDWP – ASfP ustawiapersist.debug.dalvik.vm.jdwp.enabled=1i ponownie uruchamia urządzenie. Gdy jest aktywny, przycisk wyświetla komunikat JDWP włączony z działaniem Wyłącz JDWP po kliknięciu prawym przyciskiem myszy. - Wybierz z tabeli proces docelowy (procesy Java i ART są oznaczone ikoną filiżanki kawy).
- U dołu karty Załącz wybierz Debuger Java, Debuger natywny lub obie te opcje. Wybranie obu opcji spowoduje otwarcie 2 połączonych kart w oknie narzędziowym Debug:
<process> (<pid>)wbudowanego debugera LLDB i<process> (<pid>)-jdwpdebugera Java. Ich cykle życia są ze sobą powiązane, więc zatrzymanie jednej sesji powoduje zatrzymanie obu. - Kliknij Dołącz i korzystaj z aplikacji na urządzeniu, aby osiągnąć punkty przerwania.

Debugowanie procesów systemowych (C i C++) i weryfikacja symboli
Aby debugować demony systemowe, HAL-e lub usługi systemowe (np.android.hardware.bluetooth-service.cuttlefish, surfaceflinger lubaudioserver), wykonaj te czynności:
- Otwórz Uruchom > Dołącz do procesu Androida (Control+Alt+A). Jeśli na pasku narzędzi wyświetla się Root Device (Urządzenie z dostępem do roota), kliknij go, aby ASfP uruchomił
adb rooti wyświetlił komunikat Device is rooted (Urządzenie ma dostęp do roota). - Na pasku narzędzi u góry kliknij Pokaż procesy systemowe i odfiltruj proces docelowy.
- Weryfikowanie lokalnych symboli debugowania w panelu Biblioteki: wybranie procesu powoduje wypełnienie tabeli Biblioteki wszystkimi bibliotekami współdzielonymi ELF (
.so) załadowanymi w procesie oraz pierwszymi 8 znakami szesnastkowymi identyfikatora kompilacji ELF. ASfP dopasowuje każdy identyfikator kompilacji do:out/target/product/<device>/symbols(symbols/.build-idjest wymagany do rozwiązywania bibliotek w pakietach APEX):- Zweryfikowane biblioteki są oznaczone ikoną znacznika wyboru. Wskaż dowolny rozwiązany wiersz, aby wyświetlić podgląd pełnej lokalnej ścieżki symbolu
.debug. - Nierozwiązane biblioteki bez pasujących symboli lokalnych wyświetlają ikonę ostrzeżenia.
- Zweryfikowane biblioteki są oznaczone ikoną znacznika wyboru. Wskaż dowolny rozwiązany wiersz, aby wyświetlić podgląd pełnej lokalnej ścieżki symbolu
- Wykrywanie procesów innych niż Java: gdy wybierzesz proces C++ lub Rust (oznaczony ikoną sześciokąta
C), ASfP ukryje Debuger Javy i wyświetli komunikat Debugowanie Javy jest niedostępne, to nie jest proces Javy, pozostawiając zaznaczone pole Debuger natywny. - Ustaw punkty przerwania w plikach źródłowych C, C++ lub Rust, kliknij Dołącz i wywołaj ścieżkę kodu na urządzeniu.

Debugowanie kodu w Rust
ASfP debuguje kod platformy Rust za pomocą tego samego wbudowanego debugera LLDB, który jest używany w przypadku języków C i C++. Nie wymaga to zewnętrznego adaptera ani ręcznej konfiguracji serwera: ASfP używa lldb-dap z dołączonego łańcucha narzędzi i automatycznie wczytuje z wcześniej skompilowanych plików AOSP moduły formatujące Rust, dzięki czemu standardowe typy, takie jak String, Vec, HashMap i Option, wyświetlają wartości strukturalne w okienku Zmienne.
Dołączanie do działającego procesu Rust na urządzeniu
Wykonaj czynności opisane w sekcji Debugowanie procesu systemowego (C i C++): otwórz Uruchom > Dołącz do procesu Androida, sprawdź, czy opcja Urządzenie jest zrootowane jest zaznaczona, a symbole lokalne mają znacznik wyboru w panelu Biblioteki, pozostaw zaznaczoną opcję Debuger natywny i kliknij Dołącz. Ramki stosu Rust oraz C lub C++ pojawiają się razem w tej samej sesji debugowania.
Debugowanie modułu rust_test lub rust_test_host
- Otwórz plik
Android.bpdeklarującyrust_testlubrust_test_hostelement docelowy i kliknij ikonę Uruchom na marginesie obok typu modułu. - Wybierz Debug '<ModuleName>' (Debuguj „<ModuleName>”). ASfP skompiluje projekt, uruchomi binarny plik testowy w LLDB na komputerze hosta lub połączonym urządzeniu i zatrzyma się w miejscach, w których ustawiono punkty przerwania w Rust.
- Aby debugować pojedynczą funkcję testową lub dostosować polecenia uruchamiania LLDB, otwórz Uruchom > Edytuj konfiguracje, wybierz wygenerowaną konfigurację Test Soong i ustaw Metodę lub rozwiń opcje Debuger. Więcej informacji o opcjach konfiguracji testu Soong znajdziesz w artykule Testowanie kodu platformy za pomocą narzędzia atest.
