Partager via


Journal de débogage Android

L’une des astuces couramment utilisées par les développeurs pour déboguer leurs applications consiste à utiliser Console.WriteLine. Toutefois, sur une plateforme mobile comme Android, il n’y a pas de console. Les appareils Android proposent un journal que vous pourrez utiliser pendant l’écriture d’applications. Cela est parfois appelé logcat en raison de la commande que vous tapez pour le récupérer. Utilisez l’outil Journal de débogage pour afficher les données enregistrées.

Vue d’ensemble du journal de débogage Android

L’outil Journal de débogage fournit un moyen d’afficher la sortie du journal pendant le débogage d’une application via Visual Studio. Le journal de débogage prend en charge les périphériques suivants :

  • Les téléphones, tablettes et wearables Android physiques.
  • Un appareil Android virtuel en cours d’exécution sur l’émulateur Android.

Notes

L’outil Journal de débogage ne fonctionne pas avec Xamarin Live Player.

Le Journal de débogage n’affiche pas de messages du journal générés pendant l’exécution de l’application en mode autonome sur l’appareil (par exemple, pendant qu’il est déconnecté de Visual Studio).

Accès au Journal de débogage à partir de Visual Studio

Pour ouvrir l’outil Journal de l’appareil, cliquez sur l’icône Journal de l’appareil (logcat) dans la barre d’outils :

Emplacement de l’outil Journal de l’appareil dans la barre d’outils

Autrement, lancez l’outil Journal de l’appareil à partir d’une des sélections de menu suivantes :

  • Afficher le > journal des autres appareils Windows >
  • Outils Journal > des appareils Android >

La capture d’écran suivante illustre les différentes parties de la fenêtre Outil de débogage :

Parties de la fenêtre Outil de débogage

  • Sélecteur d’appareil : sélectionne l’appareil physique ou l’émulateur en cours d’exécution à surveiller.

  • Entrées de journal : table des messages de journal de logcat.

  • Effacer les entrées de journal : efface toutes les entrées de journal actuelles de la table.

  • Lecture/pause : bascule entre la mise à jour ou la suspension de l’affichage des nouvelles entrées de journal.

  • Arrêter : arrête l’affichage des nouvelles entrées de journal.

  • Zone de recherche : entrez des chaînes de recherche dans cette zone pour filtrer un sous-ensemble d’entrées de journal.

Lorsque la fenêtre de l’outil Journal de débogage s’affiche, utilisez le menu déroulant de l’appareil pour choisir l’appareil Android à surveiller :

Emplacement du sélecteur d’appareil

Une fois l’appareil sélectionné, l’outil Journal de l’appareil ajoute automatiquement des entrées de journal à partir d’une application en cours d’exécution. Ces entrées de journal sont affichées dans le tableau des entrées de journal. Le basculement entre des appareils arrête et démarre la journalisation des appareils. Notez qu’un projet Android doit être chargé avant l’affichage des appareils dans le sélecteur d’appareils. Si l’appareil n’apparaît pas dans le sélecteur d’appareils, vérifiez qu’il est disponible dans le menu déroulant des appareils Visual Studio à côté du bouton Démarrer.

Accès à partir de la ligne de commande

Vous pouvez également afficher journal de débogage via la ligne de commande. Ouvrez une fenêtre d’invite de commandes et accédez au dossier platform-tools du SDK Android (en général, le dossier platform-tools du SDK se trouve dans C:\Program Files (x86)\Android\android-sdk\platform-tools).

Si un seul appareil (appareil physique ou émulateur) est joint, le journal peut être consulté en entrant la commande suivante :

$ adb logcat

Si plusieurs appareils sont joints, l’appareil doit être identifié explicitement. Par exemple, adb -d logcat affiche le journal de l’unique appareil physique connecté, tandis que adb -e logcat affiche le journal de l’unique émulateur en cours d’exécution.

Plusieurs commandes sont accessibles en entrant adb et en lisant les messages d’aide.

Écriture dans le journal de débogage

Des messages peuvent être écrits dans le Journal de débogage en utilisant les méthodes de la classe Android.Util.Log. Par exemple :

string tag = "myapp";

Log.Info (tag, "this is an info message");
Log.Warn (tag, "this is a warning message");
Log.Error (tag, "this is an error message");

Ceci produit une sortie semblable à la suivante :

I/myapp   (11103): this is an info message
W/myapp   (11103): this is a warning message
E/myapp   (11103): this is an error message

Il est également possible d’utiliser Console.WriteLine pour écrire dans le journal de débogage : ces messages apparaissent dans logcat avec un format de sortie légèrement différent (cette technique est particulièrement utile lors du débogage d’applications Xamarin.Forms sur Android) :

System.Console.WriteLine ("DEBUG - Button Clicked!");

Ceci produit une sortie semblable à la suivante dans logcat :

Info (19543) / mono-stdout: DEBUG - Button Clicked!

Messages intéressants

Lorsque vous lisez le journal (et en particulier lorsque vous fournissez des extraits de journaux à d’autres utilisateurs), l’examen du fichier journal dans son intégralité est souvent trop lourd. Pour simplifier la navigation parmi les messages du journal, démarrerez en recherchant une entrée du journal qui ressemble à ceci :

I/ActivityManager(12944): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=GcTest.GcTest/gctest.Activity1 } from pid 24175

Recherchez en particulier la ligne correspondant à l’expression régulière qui contient également le nom du package d’applications :

^I.*ActivityManager.*Starting: Intent

Cette ligne correspond au début d’une activité et la plupart des messages qui suivront sont normalement en rapport avec l’application.

Remarquez que chaque message contient l’identificateur de processus (pid) du processus générant le message. Dans le message ActivityManager ci-dessus, le processus 12944 a généré le message. Pour déterminer quel processus est le processus de l’application en cours de débogage, recherchez le mono. Message MonoRuntimeProvider :

I/ActivityThread(  602): Pub TouchTest.TouchTest.__mono_init__: mono.MonoRuntimeProvider

Ce message est fourni à partir du processus qui a été démarré. Tous les messages suivants qui contiennent ce pid proviennent du même processus.