Android Studio for Platform (ASfP) bietet einen leistungsstarken Debugger, mit dem Sie Folgendes tun können:
- Wählen Sie ein Gerät für das Debugging aus.
- Legen Sie Haltepunkte in Ihrem Java-, Kotlin-, C/C++- und Rust-Code fest.
- Variablen untersuchen und Ausdrücke zur Laufzeit auswerten
Bevor Sie den Debugger verwenden können, müssen Sie Ihren Build auf ein Gerät oder einen Emulator flashen.
Fehlerbehebung im App-Prozess (Java/Kotlin)
So beheben Sie Fehler in einem Java- oder Kotlin-Anwendungsprozess:
Legen Sie Haltepunkte in Ihrem Java- oder Kotlin-Code in ASfP fest.
Wählen Sie im Menü Run > Attach Debugger to Android Process (Ausführen > Debugger an Android-Prozess anhängen) aus.
Achten Sie darauf, dass im Dialogfeld Prozess auswählen der Debug-Typ auf Nur Java festgelegt ist.
Wählen Sie Ihr Gerät aus der Liste aus.
Wählen Sie den spezifischen Bewerbungsprozess aus, den Sie debuggen möchten.
Klicken Sie auf OK.
Interagieren Sie mit der Anwendung auf Ihrem Gerät, um die Haltepunkte zu erreichen.
Systemprozess-Debugging (C/C++)
So debuggen Sie einen in C oder C++ geschriebenen Systemprozess:
Prüfen Sie, ob nur ein Gerät oder Emulator ausgeführt wird.
Öffnen Sie ein Terminal und führen Sie
adb rootüber das Stammverzeichnis Ihres AOSP-Checkout aus:bash adb root
Legen Sie Haltepunkte in Ihrem C/C++-Code in ASfP fest.
Wählen Sie im Menü Run > Attach Debugger to Android Process (Ausführen > Debugger an Android-Prozess anhängen) aus.
Ändern Sie im Dialogfeld Prozess auswählen den Debug-Typ in Nur nativ oder Dual (Java + nativ).
Klicken Sie das Kästchen Alle Prozesse anzeigen an, um Systemprozesse zu sehen.
Wählen Sie Ihr Gerät aus der Liste aus.
Wählen Sie den Systemprozess aus, den Sie debuggen möchten, z. B.
surfaceflingerodersystem_server.Klicken Sie auf OK.
Interagieren Sie mit dem Gerät, um die Haltepunkte zu erreichen.
Rust-Debugging
ASfP unterstützt das Debugging von Rust mithilfe des Debug Adapter Protocol (DAP) mit LLDB. In diesem Abschnitt wird beschrieben, wie Sie CodeLLDB als Debug Adapter Server einrichten und Rust-Code auf dem Host und auf einem Android-Gerät debuggen.
CodeLLDB als Debugadapterserver einrichten
Erstellen Sie eine neue Ausführungs-/Fehlerbehebungskonfiguration für das Debug Adapter Protocol:
- Wählen Sie im Menü Run > Edit Configurations aus.
- Klicken Sie auf die Schaltfläche +.
- Wählen Sie Debug Adapter Protocol aus.
Klicken Sie auf dem Server-Tab auf Neuen Server erstellen.
Klicken Sie im neu geöffneten Dialogfeld auf Vorlage auswählen und wählen Sie CodeLLDB aus der Liste aus.
Nachdem Sie die CodeLLDB-Vorlage ausgewählt haben, wird der neue Server mit einer vordefinierten Konfiguration hinzugefügt.
- Aktivieren Sie das ausführliche Tracing, indem Sie im Drop-down-Menü Trace die Option Verbose auswählen.
- Fügen Sie eine Umgebungsvariable hinzu, die den Pfad zu
lldb-serverin Ihren vorkompilierten Android-Quellen angibt:
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- Ändern Sie den Abschnitt
<<insert base directory>>nicht.
Fehler bei Rust-Binärdateien auf dem Host beheben
- Öffnen Sie den Tab Configuration in Ihrer Ausführungs-/Debugkonfiguration für das Debugadapterprotokoll.
- Wählen Sie Starten als Debug-Modus aus.
- Aktualisieren Sie das Arbeitsverzeichnis und wählen Sie die Binärdatei aus, die Sie debuggen möchten.
- Klicken Sie auf OK, um die Konfiguration zu speichern.
- Starten Sie die Debugging-Sitzung, indem Sie neben der Konfiguration auf das Symbol Debuggen klicken.
Wenn Sie diesen Befehl zum ersten Mal ausführen, wird CodeLLDB heruntergeladen. In der Konsole sollten DAP-Traces angezeigt werden. Haltepunkte, die in Ihrem Rust-Code festgelegt sind, sollten wie erwartet erreicht werden.
Rust-Binärdateien auf einem Android-Gerät debuggen (Attach-Modus)
PID ermitteln:Ermitteln Sie die Prozess-ID (PID) der Anwendung, die Sie auf dem Android-Gerät debuggen möchten.
lldb-Server auf dem Gerät starten:Führen Sie im Stammverzeichnis Ihres Android-Quellbaum-Checkouts das
lldbclient.py-Skript aus und ersetzen Sie<PID>durch die Prozess-ID:lldbclient.py --setup-forwarding vscode-lldb -p <PID>Mit diesem Skript wird das richtige
lldb-serverauf das Gerät übertragen, das Gerät gestartet, die Portweiterleitung eingerichtet (Hostport 5039 zum Gerät) und die für die nächsten Schritte erforderliche DAP-JSON-Konfiguration ausgegeben. Lassen Sie dieses Terminal geöffnet.CodeLLDB-Debugadapter auf dem Host starten:
- Wechseln Sie zum Verzeichnis der CodeLLDB-Erweiterung (Standard:
~/.lsp4ij/dap/codelldb/extension/adapter). - Legen Sie die erforderlichen Umgebungsvariablen fest und starten Sie den Adapterserver. Ersetzen Sie dabei
REPO_ROOTundCLANG_VERSIONdurch die Werte, die Sie bei der Servereinrichtung festgelegt haben:
# 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- Wechseln Sie zum Verzeichnis der CodeLLDB-Erweiterung (Standard:
ASfP-DAP-Client konfigurieren:
- Kehren Sie in ASfP zu Ihrer Run/Debug-Konfiguration für das Debug-Adapterprotokoll zurück.
- Wählen Sie den Tab Konfiguration aus.
- Stellen Sie Debug-Modus auf Anhängen ein.
- Legen Sie Adresse auf
localhostfest. - Legen Sie für Port den Wert
1234fest. - Fügen Sie die JSON-Ausgabe aus dem Befehl
lldbclient.py(Schritt 2) in das Feld DAP-Parameter (JSON) ein.
Klicken Sie auf Debuggen, um die Debugging-Sitzung zu starten.
Fehlerbehebung
- Wenn der Fehler
error: Connection shut down by remote side while waiting for reply to initial handshake packetangezeigt wird, beenden Sie die aktuelle Debugging-Sitzung und starten Sielldb-serverauf dem Gerät und den CodeLLDB-Adapter auf dem Host neu.