In Android Studio for Platform (ASfP) ist das Debugging von Plattformen in mehreren Sprachen auf dem Tab Attach (Anhängen) im Toolfenster Debug (Debuggen) integriert:
- Wählen Sie Run > Attach to Android Process (Control+Alt+A) aus, um den Java-Debugger, den nativen Debugger (gebündeltes LLDB) oder beide an eine beliebige laufende App oder einen beliebigen Systemprozess auf einem physischen Gerät oder einem virtuellen Cuttlefish-Gerät anzuhängen.
- Prüfen Sie jede geladene gemeinsam genutzte Bibliothek (
.so) und ihre achtstellige ELF-Build-ID im Bereich Libraries (Bibliotheken), bevor Sie sie anhängen. Die Häkchensymbole bestätigen, dass die lokalen Debugging-Symbole unterout/target/product/<device>/symbolsübereinstimmen. - Geräteanforderungen über die Symbolleiste verwalten: Filtern Sie mit Systemprozesse anzeigen, klicken Sie auf Gerät mit Root-Zugriff, um
adb rootauszuführen (bei Aktivierung wird Gerät hat Root-Zugriff angezeigt), und klicken Sie auf JDWP aktivieren, um JDWP füruserdebug-Builds zu aktivieren. - Sie können bedingte Breakpoints und Ausnahme-Breakpoints festlegen, Inline-Variablenwerte im Editor ansehen, Drop Frame und das intelligente Step Into verwenden und strukturierte C++- und Rust-Typen zur Laufzeit untersuchen.
Bevor Sie den Debugger verwenden, müssen Sie Ihr lunch-Zielvorhaben erstellen, damit der lokale out/target/product/<device>/symbols/.build-id-Symbolindex vorhanden ist, und ein passendes Geräte-Image flashen oder starten.
Java- und duales Java- und natives Debugging
Wenn Sie eine Java- oder Kotlin-Anwendung, eine System-App (z. B. com.android.messaging, Einstellungen oder SystemUI) oder einen Prozess, der JNI- und C++- oder Rust-Code aufruft, debuggen möchten, führen Sie die folgenden Schritte aus:
- Legen Sie Haltepunkte in Ihren Java-, Kotlin-, C-, C++- oder Rust-Quelldateien fest.
- Wählen Sie Run > Attach to Android Process (Strg+Alt+A) aus. ASfP öffnet im Debug-Toolfenster einen angepinnten Tab Attach (Anhängen).
- Wählen Sie im Drop-down-Menü „Gerät“ das Zielgerät aus. Wenn JDWP in einem
userdebug-Build nicht aktiviert ist, klicken Sie auf JDWP aktivieren. ASfP legtpersist.debug.dalvik.vm.jdwp.enabled=1fest und startet das Gerät neu. Wenn der Button aktiv ist, wird JDWP enabled (JDWP aktiviert) angezeigt. Mit einem Rechtsklick wird die Aktion Disable JDWP (JDWP deaktivieren) aufgerufen. - Wählen Sie den Zielprozess aus der Tabelle aus. Für Java- und ART-Prozesse wird ein Kaffeetassensymbol angezeigt.
- Wählen Sie unten auf dem Tab Attach (Anhängen) Java debugger (Java-Debugger), Native debugger (Nativer Debugger) oder beides aus. Wenn Sie beide auswählen, werden zwei verknüpfte Tabs im Toolfenster Debug geöffnet:
<process> (<pid>)für integriertes LLDB und<process> (<pid>)-jdwpfür Java. Ihre Lebenszyklen sind miteinander verbunden. Wenn Sie eine der beiden Sitzungen beenden, werden beide beendet. - Klicken Sie auf Anhängen und interagieren Sie mit der App auf Ihrem Gerät, um die Haltepunkte zu erreichen.

Fehlerbehebung und Symbolüberprüfung für Systemprozesse (C und C++)
So debuggen Sie System-Daemons, HALs oder Systemdienste (z. B. android.hardware.bluetooth-service.cuttlefish, surfaceflinger oder audioserver):
- Öffnen Sie Run > Attach to Android Process (Strg+Alt+A). Wenn in der Symbolleiste Root Device (gerootetes Gerät) angezeigt wird, klicken Sie darauf, damit ASfP
adb rootausgeführt wird und Device is rooted (Gerät ist gerootet) angezeigt wird. - Wählen Sie in der oberen Symbolleiste Systemprozesse anzeigen aus und filtern Sie nach dem Zielprozess.
- Lokale Debugging-Symbole im Bereich „Bibliotheken“ prüfen: Wenn Sie einen Prozess auswählen, wird die Tabelle Bibliotheken mit jeder ELF-Bibliothek (
.so) gefüllt, die im Prozess geladen wurde, sowie mit den ersten acht hexadezimalen Zeichen der Build-ID der ELF-Datei. ASfP vergleicht jede Build-ID mitout/target/product/<device>/symbols(symbols/.build-idist erforderlich, um Bibliotheken in APEX-Dateien aufzulösen):- Verifizierte Bibliotheken sind mit einem Häkchensymbol gekennzeichnet. Bewegen Sie den Mauszeiger auf eine aufgelöste Zeile, um den vollständigen lokalen
.debug-Symbolpfad in der Vorschau zu sehen. - Für nicht aufgelöste Bibliotheken ohne übereinstimmende lokale Symbole wird ein Warnsymbol angezeigt.
- Verifizierte Bibliotheken sind mit einem Häkchensymbol gekennzeichnet. Bewegen Sie den Mauszeiger auf eine aufgelöste Zeile, um den vollständigen lokalen
- Erkennung von Nicht-Java-Prozessen: Wenn Sie einen C++- oder Rust-Prozess auswählen (mit einem Sechseck
Cgekennzeichnet), wird Java-Debugger in ASfP ausgeblendet und Java-Debugging nicht verfügbar, kein Java-Prozess angezeigt, während Nativer Debugger aktiviert bleibt. - Legen Sie Haltepunkte in Ihren C-, C++- oder Rust-Quelldateien fest, klicken Sie auf Attach (Anhängen) und lösen Sie den Codepfad auf dem Gerät aus.

Rust-Code debuggen
ASfP debuggt Rust-Plattformcode mit demselben integrierten LLDB-Debugger, der für C und C++ verwendet wird. Es ist kein externer Adapter oder eine manuelle Servereinrichtung erforderlich: ASfP verwendet lldb-dap aus der mitgelieferten Toolchain und lädt automatisch die Rust-Pretty-Printer aus Ihren AOSP-Prebuilts. So werden Standardtypen wie String, Vec, HashMap und Option strukturierte Werte im Bereich Variablen angezeigt.
An einen laufenden Rust-Prozess auf einem Gerät anhängen
Folgen Sie der Anleitung unter Systemprozess-Debugging (C und C++): Öffnen Sie Ausführen > An Android-Prozess anhängen, prüfen Sie, ob Gerät ist gerootet aktiviert ist und lokale Symbole im Bereich Bibliotheken ein Häkchen haben, lassen Sie Nativer Debugger aktiviert und klicken Sie auf Anhängen. Rust- und C- oder C++-Stapelframes werden in derselben Debugging-Sitzung zusammen angezeigt.
Fehler in einem rust_test- oder rust_test_host-Modul beheben
- Öffnen Sie die Datei
Android.bp, in der einrust_test- oderrust_test_host-Ziel deklariert ist, und klicken Sie im Gutter neben dem Modultyp auf das Symbol Ausführen. - Wählen Sie Debug '<ModuleName>' aus. ASfP erstellt das Ziel, startet die Testbinärdatei unter LLDB auf Ihrem Hostcomputer oder verbundenen Gerät und hält an Ihren Rust-Haltepunkten an.
- Wenn Sie eine einzelne Testfunktion debuggen oder LLDB-Startbefehle anpassen möchten, öffnen Sie Ausführen > Konfigurationen bearbeiten, wählen Sie die generierte Soong-Test-Konfiguration aus und legen Sie Methode fest oder maximieren Sie die Debugger-Optionen. Weitere Informationen zu den Konfigurationsoptionen für Soong Test finden Sie unter Plattformcode mit atest testen.
