Android Studio for Platform (ASfP) intègre le débogage de plate-forme multilingue autour de l'onglet Attach (Associer) dans la fenêtre d'outil Debug (Déboguer) :
- Sélectionnez Run > Attach to Android Process (Exécuter > Associer à un processus Android) (Ctrl+Alt+A) pour associer le débogueur Java, le débogueur natif (LLDB intégré) ou les deux à n'importe quelle application ou processus système en cours d'exécution sur un appareil physique ou un appareil virtuel Cuttlefish.
- Inspectez chaque bibliothèque partagée (
.so) chargée et son ID de build ELF de huit caractères dans le panneau Bibliothèques avant de l'associer. Des icônes en forme de coche indiquent que les symboles de débogage locaux correspondants se trouvent sousout/target/product/<device>/symbols. - Gérez les prérequis de l'appareil depuis la barre d'outils : filtrez avec Afficher les processus système, cliquez sur Appareil en mode root pour exécuter
adb root(L'appareil est en mode root s'affiche lorsque l'option est active), puis cliquez sur Activer JDWP pour activer JDWP sur les buildsuserdebug. - Définissez des points d'arrêt conditionnels et d'exception, affichez les valeurs des variables intégrées dans l'éditeur, utilisez Drop Frame et Step Into intelligent, et inspectez les types C++ et Rust structurés au moment de l'exécution.
Avant d'utiliser le débogueur, créez votre cible lunch afin que l'index de symboles out/target/product/<device>/symbols/.build-id local existe, puis flashez ou lancez une image d'appareil correspondante.
Débogage Java et double débogage Java et natif
Pour déboguer une application Java ou Kotlin, une application système (telle que com.android.messaging, Paramètres ou SystemUI) ou un processus appelant du code JNI, C++ ou Rust, procédez comme suit :
- Définissez des points d'arrêt dans vos fichiers sources Java, Kotlin, C, C++ ou Rust.
- Sélectionnez Run > Attach to Android Process (Exécuter > Associer à un processus Android) (Ctrl+Alt+A). ASfP ouvre un onglet Attach (Associer) épinglé dans la fenêtre d'outil Debug (Débogage).
- Sélectionnez votre appareil cible dans le menu déroulant des appareils. Si JDWP n'est pas activé sur une compilation
userdebug, cliquez sur Enable JDWP (Activer JDWP). ASfP définitpersist.debug.dalvik.vm.jdwp.enabled=1et redémarre l'appareil. Lorsqu'il est actif, le bouton affiche JDWP activé avec l'action Désactiver JDWP accessible par un clic droit. - Sélectionnez le processus cible dans le tableau (les processus Java et ART affichent une icône en forme de tasse à café).
- En bas de l'onglet Attach (Associer), sélectionnez Java debugger (Débogueur Java), Native
debugger (Débogueur natif) ou les deux. Si vous sélectionnez les deux, deux onglets associés s'ouvrent dans la fenêtre d'outil Debug :
<process> (<pid>)pour LLDB intégré et<process> (<pid>)-jdwppour Java. Leurs cycles de vie sont liés. Par conséquent, si vous arrêtez l'une des sessions, les deux s'arrêtent. - Cliquez sur Attach (Associer) et interagissez avec l'application sur votre appareil pour atteindre vos points d'arrêt.

Débogage des processus système (C et C++) et vérification des symboles
Pour déboguer des daemons système, des HAL ou des services système (tels que android.hardware.bluetooth-service.cuttlefish, surfaceflinger ou audioserver), procédez comme suit :
- Ouvrez Exécuter > Associer à un processus Android (Ctrl+Alt+A). Si la barre d'outils affiche Root Device (Appareil en mode root), cliquez dessus pour que ASfP exécute
adb rootet affiche Device is rooted (L'appareil est en mode root). - Sélectionnez Afficher les processus système dans la barre d'outils en haut de l'écran, puis filtrez le processus cible.
- Vérifiez les symboles de débogage locaux dans le panneau "Bibliothèques" : la sélection d'un processus remplit le tableau Bibliothèques avec chaque bibliothèque partagée ELF (
.so) chargée dans le processus et les huit premiers caractères hexadécimaux de son ID de compilation ELF. ASfP fait correspondre chaque ID de build àout/target/product/<device>/symbols(symbols/.build-idest nécessaire pour résoudre les bibliothèques dans les APEX) :- Les bibliothèques validées sont signalées par une icône en forme de coche. Pointez sur une ligne résolue pour prévisualiser le chemin complet du symbole
.debuglocal. - Les bibliothèques non résolues sans symboles locaux correspondants affichent une icône d'avertissement.
- Les bibliothèques validées sont signalées par une icône en forme de coche. Pointez sur une ligne résolue pour prévisualiser le chemin complet du symbole
- Détection des processus non Java : lorsque vous sélectionnez un processus C++ ou Rust (marqué par une icône en forme d'hexagone
C), ASfP masque le débogueur Java et affiche le message Débogage Java indisponible, il ne s'agit pas d'un processus Java. tout en laissant la case Débogueur natif cochée. - Définissez des points d'arrêt dans vos fichiers sources C, C++ ou Rust, cliquez sur Associer, puis déclenchez le chemin de code sur l'appareil.

Déboguer du code Rust
ASfP débogue le code de plate-forme Rust avec le même débogueur LLDB intégré que celui utilisé pour C et C++. Aucun adaptateur externe ni configuration manuelle du serveur ne sont nécessaires : ASfP utilise lldb-dap à partir de sa chaîne d'outils groupée et charge automatiquement les pretty-printers Rust à partir de vos précompilés AOSP. Ainsi, les types standards tels que String, Vec, HashMap et Option affichent des valeurs structurées dans le volet Variables.
Associer le débogueur à un processus Rust en cours d'exécution sur un appareil
Suivez les étapes de la section Débogage des processus système (C et C++) : ouvrez Exécuter > Associer au processus Android, vérifiez que L'appareil est rooté et que les symboles locaux sont cochés dans le panneau Bibliothèques, laissez Débogueur natif coché, puis cliquez sur Associer. Les frames de pile Rust et C ou C++ apparaissent ensemble dans la même session de débogage.
Déboguer un module rust_test ou rust_test_host
- Ouvrez le fichier
Android.bpdéclarant une ciblerust_testourust_test_host, puis cliquez sur l'icône Exécuter dans la marge à côté du type de module. - Sélectionnez Debug '<ModuleName>'. ASfP crée la cible, lance le binaire de test sous LLDB sur votre machine hôte ou votre appareil connecté, et s'arrête à vos points d'arrêt Rust.
- Pour déboguer une fonction de test unique ou personnaliser les commandes de démarrage LLDB, ouvrez Exécuter > Modifier les configurations, sélectionnez la configuration Test Soong générée, puis définissez Méthode ou développez les options Débogueur. Pour en savoir plus sur les options de configuration de Soong Test, consultez Tester le code de la plate-forme avec atest.
