Débogage des applications Xamarin.iOS

Vous pouvez déboguer les applications Xamarin.iOS à l’aide du débogueur intégré de Visual Studio pour Mac ou Visual Studio.

Utilisez la prise en charge du débogage natif de Visual Studio pour Mac afin de déboguer le code C# et celui d’autres langages managés. Utilisez LLDB quand vous devez déboguer du code C, C++ ou Objective-C lié à votre projet Xamarin.iOS.

Notes

Lorsque vous compilez des applications en mode débogage, Xamarin.iOS génère des applications plus lentes et beaucoup plus volumineuses, car chaque ligne de code doit être instrumentée. Avant la mise en production, veillez à effectuer une build de mise en production.

Le débogueur Xamarin.iOS est intégré à votre IDE. Il permet aux développeurs de déboguer les applications Xamarin.iOS générées à l’aide de l’un des langages managés pris en charge par Xamarin.iOS dans le simulateur et sur l’appareil.

Le débogueur Xamarin.iOS utilise le débogueur Mono Soft, ce qui signifie que le code généré et le runtime Mono fonctionnent conjointement avec l’IDE pour fournir une expérience utilisateur de débogage. Il s’agit d’une approche différente de celle des débogueurs « durs » comme LLDB ou MDB, qui contrôlent un programme sans connaissance ou coopération du programme débogué.

Définition de points d’arrêt

Quand vous êtes prêt à déboguer votre application, la première étape consiste à définir des points d’arrêt pour votre application. Pour ce faire, cliquez dans la zone de marge de l’éditeur, à côté du numéro de ligne de code où vous souhaitez marquer un arrêt :

Vous pouvez afficher tous les points d’arrêt définis dans votre code en accédant au panneau Points d’arrêt :

Panneau Points d’arrêt

Si le pavé Points d’arrêt ne s’affiche pas automatiquement, vous pouvez le rendre visible en sélectionnant Afficher les > points d’arrêt Windows > de débogage

Avant de déboguer une application, vérifiez toujours que la configuration est de type Débogage, car elle contient un ensemble d’outils utiles au débogage, par exemple la définition des points d’arrêt, l’utilisation des visualiseurs de données et l’affichage de la pile des appels :

Démarrer le débogage

Pour démarrer le débogage, sélectionnez l’appareil cible ou un appareil similaire dans votre IDE :

Déployez ensuite votre application en appuyant sur le bouton Lecture .

Quand vous atteignez un point d’arrêt, le code est mis en surbrillance en jaune :

Le code est mis en surbrillance en jaune

À ce stade, vous pouvez utiliser les outils de débogage tels que l’inspection des valeurs des objets, pour obtenir des informations supplémentaires sur ce qui se passe dans votre code :

Affichage d’une valeur de couleur

Points d'arrêt conditionnels

Vous pouvez également définir des règles qui dictent les circonstances dans lesquelles un point d’arrêt doit se produire : on parle alors d’ajout d’un point d’arrêt conditionnel.

Pour définir un point d’arrêt conditionnel, accédez au Fenêtre Propriétés point d’arrêt, ce qui peut être effectué de deux manières :

  • Pour ajouter un nouveau point d’arrêt conditionnel, cliquez avec le bouton droit sur la marge de l’éditeur, à gauche du numéro de la ligne de code pour laquelle vous voulez définir un point d’arrêt, et sélectionnez Nouveau point d’arrêt :

    Sélectionner un nouveau point d’arrêt

  • Pour ajouter une condition à un point d’arrêt existant, cliquez avec le bouton droit sur le point d’arrêt et sélectionnez Propriétés du point d’arrêt ou, dans le panneau Points d’arrêt, sélectionnez le bouton propriétés illustré ci-dessous :

    Le pavé points d’arrêt

Vous pouvez ensuite entrer la condition de déclenchement du point d’arrêt :

Entrer la condition pour que le point d’arrêt se produise

Quand un point d’arrêt a été atteint, les outils de débogage vous permettent de contrôler l’exécution du programme. L’IDE affiche quatre boutons qui vous permettent d’exécuter le code pas à pas.

Dans Visual Studio pour Mac, ils se présentent comme ceci :

Les outils de débogage permettent au développeur de contrôler l’exécution du programme

Ces règles sont les suivantes :

  • Lecture/Arrêt - Permet de démarrer/d’arrêter l’exécution du code, jusqu’au point d’arrêt suivant.
  • Pas à pas : cette opération exécute la ligne de code suivante. Si la ligne suivante est un appel de fonction, pas à pas exécute la fonction et s’arrête à la ligne de code suivante après la fonction.
  • Pas à pas : cette opération exécute également la ligne de code suivante. Si la ligne suivante est un appel de fonction, Pas à pas détaillé s’arrête à la première ligne de la fonction, ce qui vous permet de continuer le débogage ligne par ligne de la fonction. Si la ligne suivante n’est pas une fonction, il se comporte comme Pas à pas principal.
  • Pas à pas : cela retourne à la ligne où la fonction actuelle a été appelée.

Points d’arrêt

Il est important de souligner qu’iOS n’offre aux applications que quelques secondes (10) pour démarrer et exécuter la méthode FinishedLaunching dans le délégué Application. Si l’application n’exécute pas cette méthode en moins de 10 secondes, iOS tue le processus.

Cela signifie qu’il est presque impossible de définir des points d’arrêt dans le code de démarrage de votre programme. Si vous souhaitez déboguer votre code de démarrage, vous devez retarder son initialisation et l’insérer dans une méthode appelée par un minuteur, ou dans une méthode de rappel exécutée après la fin de FinishedLaunching.

Diagnostics de l’appareil

Si une erreur se produit durant la configuration du débogueur, vous pouvez activer les diagnostics détaillés en ajoutant "-v -v -v" aux arguments mtouch supplémentaires dans les options du projet. Cela permet d’afficher des informations détaillées relatives à l’erreur sur la console de l’appareil.

Débogage sans fil

Par défaut, dans Xamarin.iOS, votre application est déboguée sur les appareils via la connexion USB. Parfois, il est nécessaire de disposer d’un périphérique USB pour tester le branchement/débranchement du câble afin de développer des applications fonctionnant avec un ExternalAccessory. Dans ce cas, vous pouvez utiliser le débogage via le réseau sans fil.

Pour plus d’informations sur le déploiement et le débogage sans fil, consultez le guide Déploiement sans fil.

Détails techniques

Xamarin.iOS utilise le nouveau débogueur Mono Soft. Contrairement au débogueur Mono standard (programme qui contrôle un processus distinct à l’aide des interfaces du système d’exploitation) le débogueur Soft fonctionne de telle sorte que le runtime Mono expose la fonctionnalité de débogage via un protocole filaire.

Au démarrage, l’application à déboguer contacte le débogueur, qui démarre ensuite son exécution. Dans Xamarin.iOS pour Visual Studio, l’Agent Mac Xamarin sert d’intermédiaire entre l’application (dans Visual Studio) et le débogueur.

Ce débogueur Soft nécessite un schéma de débogage coopératif quand il s’exécute sur l’appareil. Cela signifie que vos builds binaires au moment du débogage sont plus volumineuses, car le code est instrumenté pour contenir du code supplémentaire à chaque point de séquence afin de prendre en charge le débogage.

Accès à la console

Les journaux d’incidents et la sortie de la classe Console sont envoyés à la console de l’iPhone. Vous pouvez accéder à cette console avec Xcode en utilisant l’organisateur, et en sélectionnant votre appareil dans l’organisateur.

Si vous ne souhaitez pas démarrer Xcode, vous pouvez utiliser le iPhone Configuration Utility (Utilitaire de configuration iPhone) d’Apple pour accéder directement à la console. En prime, vous pouvez accéder aux journaux de la console à partir d’une machine Windows, si vous déboguez un problème sur le terrain.

Pour les utilisateurs de Visual Studio, certains journaux sont disponibles dans la fenêtre Sortie. Toutefois, passez sur un Mac pour obtenir des journaux plus complets et plus détaillés.


Débogage des bibliothèques de classes de Mono

Xamarin.iOS est livré avec le code source des bibliothèques de classes de Mono. Vous pouvez vous en servir pour effectuer un pas à pas détaillé à partir du débogueur afin d’examiner la façon dont les choses se déroulent en arrière-plan.

Comme cette fonctionnalité consomme plus de mémoire durant le débogage, elle est désactivée par défaut.

Pour activer cette fonctionnalité, vérifiez que l’option Déboguer le code du projet uniquement ; ne pas effectuer d’étape dans le code d’infrastructure est désélectionnée sous le menu Visual Studio pour Mac > Préférences > Débogueur, comme illustré ci-dessous :

Débogage des bibliothèques de classes mono

Ensuite, vous pouvez démarrer votre application et effectuer un pas à pas détaillé dans les bibliothèques de classes principales de Mono.