Android Studio for Platform (ASfP) fournit un débogueur puissant qui vous permet d'effectuer les opérations suivantes :
- Sélectionnez un appareil sur lequel effectuer le débogage.
- Définir des points d'arrêt dans votre code Java, Kotlin, C/C++ et Rust
- Examiner les variables et évaluer les expressions lors de l'exécution
Avant d'utiliser le débogueur, vous devez flasher votre build sur un appareil ou un émulateur.
Débogage du processus d'application (Java/Kotlin)
Pour déboguer un processus d'application Java ou Kotlin :
Définissez des points d'arrêt dans votre code Java ou Kotlin dans ASfP.
Sélectionnez Exécuter > Associer le débogueur à un processus Android dans le menu.
Dans la boîte de dialogue Choose Process (Sélectionner un processus), assurez-vous que Debug type (Type de débogage) est défini sur Java Only (Java uniquement).
Sélectionnez votre appareil dans la liste.
Choisissez le processus d'application spécifique que vous souhaitez déboguer.
Cliquez sur OK.
Interagissez avec l'application sur votre appareil pour atteindre les points d'arrêt.
Débogage des processus système (C/C++)
Pour déboguer un processus système écrit en C ou C++ :
Vérifiez que vous n'avez qu'un seul appareil ou émulateur en cours d'exécution.
Ouvrez un terminal et exécutez
adb rootà partir de la racine de votre extraction AOSP :bash adb root
Définissez des points d'arrêt dans votre code C/C++ dans ASfP.
Sélectionnez Exécuter > Associer le débogueur à un processus Android dans le menu.
Dans la boîte de dialogue Choose Process (Sélectionner un processus), définissez Debug type (Type de débogage) sur Native Only (Natif uniquement) ou Dual (Java + Native) (Double [Java et Natif]).
Cochez la case Afficher tous les processus pour afficher les processus système.
Sélectionnez votre appareil dans la liste.
Choisissez le processus système spécifique que vous souhaitez déboguer (par exemple,
surfaceflingerousystem_server).Cliquez sur OK.
Interagissez avec l'appareil pour atteindre vos points d'arrêt.
Débogage Rust
ASfP est compatible avec le débogage Rust à l'aide du protocole Debug Adapter (DAP) avec LLDB. Cette section explique comment configurer CodeLLDB en tant que serveur d'adaptateur de débogage et comment déboguer du code Rust sur l'hôte et sur un appareil Android.
Configurer CodeLLDB en tant que serveur d'adaptateur de débogage
Créez une configuration d'exécution/de débogage Debug Adapter Protocol :
- Sélectionnez Run > Edit Configurations (Exécuter > Modifier les configurations) dans le menu.
- Cliquez sur le bouton +.
- Sélectionnez Debug Adapter Protocol (Protocole de l'adaptateur de débogage).
Dans l'onglet "Serveur", cliquez sur Créer un serveur.
Dans la boîte de dialogue qui s'ouvre, cliquez sur Choisir un modèle, puis sélectionnez CodeLLDB dans la liste.
Après avoir sélectionné le modèle CodeLLDB, le nouveau serveur est ajouté avec une configuration prédéfinie.
- Activez le traçage détaillé en sélectionnant Détaillé dans le menu déroulant Tracer.
- Ajoutez une variable d'environnement qui spécifie le chemin d'accès à
lldb-serverdans vos précompilés sources 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- Ne modifiez pas la section
<<insert base directory>>.
Déboguer les binaires Rust sur l'hôte
- Ouvrez l'onglet Configuration dans votre configuration d'exécution/de débogage du protocole de l'adaptateur de débogage.
- Sélectionnez Launch (Lancer) comme mode de débogage.
- Mettez à jour le répertoire de travail et sélectionnez le fichier binaire que vous souhaitez déboguer.
- Cliquez sur OK pour enregistrer la configuration.
- Démarrez la session de débogage en cliquant sur l'icône Déboguer à côté de la configuration.
La première fois que vous exécutez cette commande, CodeLLDB est téléchargé. Des traces DAP devraient s'afficher dans la console. Les points d'arrêt définis dans votre code Rust devraient être atteints comme prévu.
Déboguer des binaires Rust sur un appareil Android (mode "Attacher")
Recherchez le PID : identifiez l'identifiant de processus (PID) de l'application que vous souhaitez déboguer sur l'appareil Android.
Démarrez lldb-server sur l'appareil : à partir de la racine de votre extraction de l'arborescence source Android, exécutez le script
lldbclient.pyen remplaçant<PID>par l'ID du processus :lldbclient.py --setup-forwarding vscode-lldb -p <PID>Ce script envoie le bon
lldb-serverà l'appareil, le démarre, configure le transfert de port (port hôte 5039 vers l'appareil) et génère la configuration JSON DAP nécessaire pour les étapes suivantes. Gardez ce terminal ouvert.Démarrez l'adaptateur de débogage CodeLLDB sur l'hôte :
- Accédez au répertoire de l'extension CodeLLDB (par défaut :
~/.lsp4ij/dap/codelldb/extension/adapter). - Définissez les variables d'environnement requises et démarrez le serveur de l'adaptateur, en remplaçant
REPO_ROOTetCLANG_VERSIONcomme indiqué dans la configuration du serveur :
# 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- Accédez au répertoire de l'extension CodeLLDB (par défaut :
Configurez le client DAP ASfP :
- Revenez à la configuration d'exécution/de débogage du protocole de l'adaptateur de débogage dans ASfP.
- Sélectionnez l'onglet Configuration.
- Définissez Mode débogage sur Attacher.
- Définissez Adresse sur
localhost. - Définissez le paramètre Port sur
1234. - Collez le résultat JSON de la commande
lldbclient.py(étape 2) dans le champ Paramètres DAP (JSON).
Cliquez sur Debug (Déboguer) pour démarrer la session de débogage.
Dépannage
- Si l'erreur
error: Connection shut down by remote side while waiting for reply to initial handshake packets'affiche, mettez fin à la session de débogage en cours, puis redémarrezlldb-serversur l'appareil et l'adaptateur CodeLLDB sur l'hôte.