Java pour les développeurs Android

Utiliser le débuggeur

Testez gratuitement nos 1324 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Initiez-vous au fonctionnement des outils de débogage Java. Ils vous permettront de suivre votre code pas à pas.
09:42

Transcription

Dans cette vidéo, nous allons voir comment fonctionne l'outil de débogage d'Android Studio. Qu'est-ce que le débogage ? Le débogage nous permet de lancer notre application en exécutant ses instructions pas à pas. Dans quel intérêt ? Tout simplement, cela va pouvoir nous aider à détecter des comportements non voulus. Il existe deux types d'erreurs. Les erreurs de compilation et les erreurs d'exécution. Je vais d'abord commencer par les erreurs de compilation. Si je me trompe dans la syntaxe, par exemple ici, j'enlève le « ; ». Il m'indique, par un petit trait rouge, qu'il y a une erreur. Mais sur la partie droite, pas d'erreur. Dès le moment où je change mon curseur de ligne, il va considérer que j'ai fini d'éditer la ligne et que là c'est une vraie erreur. Il va donc m'ajouter ce petit trait rouge ici. Si je mets le curseur dessus, il m'indique l'erreur. Si je déplace et que je clique dessus il me permet de revenir à l'erreur. Là, il m'indique même la solution. La solution n'est pas toujours évidente. Ici, c'est le cas, il m'indique clairement qu'il faut mettre un « ; ». Avant de mettre ce « ; », en plus de mettre ce petit trait rouge, si je ne suis pas sur la ligne, il m'indique ici que mon fichier est en erreur. En haut, il m'indique que tous mes packages sont en erreur et si je regarde mon explorateur de fichiers, on voit que tout est rouge, c'est-à-dire que j'ai au moins un fichier en erreur. Je peux remonter comme ça jusqu'à trouver quel fichier est en erreur. Tant que j'ai des erreurs dans mon projet, ça ne sert à rien de lancer mon application. Il faut corriger les erreurs de syntaxe. Une fois que toutes les erreurs de syntaxe sont corrigées, je peux lancer mon application. Sinon, derrière, je vais pouvoir me retrouver avec des erreurs d'exécution, voire il va lancer une ancienne version où il n'y avait pas d'erreur. Je corrige mon erreur. Si je regarde, tout le rouge a disparu. Maintenant qu'on corrigé l'erreur de compilation, j'ai intentionnellement mis dans mon code une erreur d'exécution. Je vais lancer l'application. Quand je clique sur le bouton « Ajouter », je suis censé avoir marqué « nom : Toto » et « prénom : Tata ». J'ajoute. Et là, on voit qu'on a deux fois le prénom. On a donc un comportement non voulu. Il va falloir maintenant trouver pourquoi j'ai deux fois le prénom et pas le nom et le prénom. Une façon de faire va être d'utiliser le débogueur. Comment fonctionne le débogueur ? Pour l'enclencher, il va falloir mettre un point de débogage sur le passage du code. Je vais le mettre ici car je sais que ça passe forcément ici. Au lieu de lancer l'application en mode normal, je vais la lancer en mode débogage. Il me propose de relancer l'application pour la passer en mode débogage. Il m'affiche une fenêtre qui m'indique qu'il attend le retour du mode débogage. À partir du moment où il l'a, il l'enlève. Nous nous retrouvons avec un écran blanc. Pourquoi l'écran est blanc ? Parce qu'on n'a pas encore chargé l'IHM. Ici, je lui demande de le faire, je charge les éléments. Mais pour l'instant, c'est moi qui ai la main. Tant qu'il n'a pas fini la méthode onCreate, il ne chargera pas l'IHM. Tant qu'il n'a pas chargé l'IHM, l'écran reste blanc. Je vais donc maintenant pouvoir exécuter mon code pas à pas. On peut voir, par la ligne sur fond bleu, que notre point de débogage a été atteint. Ça veut dire que la prochaine instruction à être exécutée sera celle-là. D'ailleurs, si je prends mon « tv_console » et que je laisse mon curseur dessus, je peux voir son état. Je vois qu'à l'intérieur il y a « null », c'est-à-dire qu'il n'a pas de valeur. Pour passer à l'instruction suivante : cette petite icône, « Step Over ». Je suis passé à l'instruction suivante, j'ai donc exécuté cette instruction-là. Si je prends mon « tv_console », maintenant j'ai tout un tas de choses dedans. Et je peux continuer comme ça. À quoi correspond la petite icône avant ? Si je suis en train de me balader dans tous les fichiers ou toutes les méthodes, et que je veux savoir où en est mon instruction, je clique dessus et il m'amène sur la prochaine instruction à être exécutée. Je continue et, là, j'arrive à la fin de la méthode. Si je passe à l'instruction suivante, je vais me retrouver à l'endroit où a été appelée la méthode. Là, je me retrouve dans du code que je ne reconnais pas. Je suis dans la classe « Activity » et dans le SDK d'Android. Je suis donc dans les fichiers qui appellent la méthode onCreate. Ça ne sert à rien de continuer pas à pas sinon on va remonter sur tous les fichiers du SDK et ce n'est pas forcément pertinent. Je vais donc appuyer sur le bouton « Resume » qui va continuer les exécutions des instructions de mon application jusqu'à tomber sur un autre point de débogage. Il n'y en a pas. Normal : on ne repasse pas dans la méthode onCreate. Mon IHM est apparu. Je peux jouer avec. Notre erreur se produit quand on clique sur « Ajouter ». On va donc mettre un point d'arrêt dans la méthode onClick où sont interceptés les clics. On passe dans la méthode onClick, il tombe sur notre point d'arrêt, le code s'arrête. Je vais passer instruction par instruction et analyser l'état de mes variables. Mon nom. Là on voit que je n'ai pas la bonne valeur, donc l'erreur vient de cette partie-là, puisque dans ma variable « nom » je récupère le contenu de l'EditText qui est dans la variable « et_nom ». Donc le problème vient de cette variable-là. Allons voir où elle a été définie. Pour cela, « CTRL », je clique dessus. Il m'amène sa définition. Je peux chercher tous les endroits où elle est utilisée. À l'aide du raccourci clavier « CTRL + F », je peux faire une recherche dans le fichier sur une chaîne de caractères. Cela me permet, par exemple, de trouver toutes les utilisations de « et_nom ». Elle a été assignée ici. Ça veut dire que mon « FindViewById » ne pointe donc pas vers le bon EditText. Effectivement, l'ID qui a été donné a été celui de prénom. Mon EditText « et_nom » redirige sur l' EditText du prénom, ici, il faut donc corriger. Je corrige. Mais ça ne sera appliqué tout de suite, il faudra que je relance mon application. Je continue mes instructions. Là, j'ai ma méthode concat. Si je clique sur cette icône, je vais passer à l’instruction d'après, donc tout ce qui sera exécuté dans concat, je ne le verrai pas, ça sera directement dans « res ». Si j'ai envie d'aller analyser concat, soit je vais y mettre un point de débogage, soit je vais utiliser l'icône d'à côté : « Step Into ». Donc je vais cliquer dessus, ce qui m'amène à l'utilisation de concat. Dans « nom » j'ai le paramètre qui lui a été transmis. Dans « prénom », j'ai le paramètre qui lui a été transmis. J'ai deux fois « Tata ». Normal. On a vu que le problème venait du fait que nos deux variables EditText pointaient vers le même EditText. Je peux exécuter mes instructions. Un autre outil qui existe dans le débogage, c'est la possibilité d'interagir et de rajouter des lignes de code. Par exemple, je vais faire un clic droit, « Evaluate Expression », et là, je vais pouvoir écrire du code. Ce code-là sera exécuté à l'endroit où le débogage s'est arrêté, c'est-à-dire ici, dans la méthode concat. J'ai accès à toutes les variables à l'état actuel du code. Ici, ma variable « nom » représente le paramètre. Ma variable « resultat » représente ce résultat. D'ailleurs si je fais « resultat » et que je fais « Evaluate », il me renvoie le contenu de « resultat ». J'ai la possibilité de modifier les éléments. Par exemple, si je fais « et_prenom.setText », que je lui applique un nouveau text, « Evaluate », là, je me retrouve avec « result = undefined ». Normal : la méthode setText ne renvoie pas de valeur, mais ça ne veut pas dire qu'elle n'a pas été exécutée. On va faire un essai, on va faire un « getText », « Evaluate », et là, il me renvoie bien la valeur que je lui ai donnée. Dernier petit élément : la dernière icône bleue nous permet de sortir d'une méthode. Ici, j'ai fini de jouer. J’appuie sur l'icône et il me renvoie où la méthode a été appelée. J'en suis donc à cette instruction-là. Elle n'a pas encore été assignée à « res », mais la méthode concat a été exécutée. « res » n'existe pas, donc le curseur ne fait rien. Je passe à la prochaine instruction. Le retour de la méthode concat a été assigné à la variable « res ». Si je me mets dessus, j'ai bien son retour. Quel peut être un autre intérêt du « Step Out » ? Si j'ai une méthode qui est appelée mais je ne sais pas quand, je mets un point d'arrêt dessus, je lance en mode débogage. Au bout d'un moment, le code s'arrête, j'utilise le « Step Out » et je vois à quel moment ma méthode a été appelée. Une autre façon de voir à quel moment le code est appelé : si je clique sur la méthode concat, je fais un clic droit et je peux cliquer sur « Find Usages ». Et là, il me montre toutes les utilisations de concat. Donc je vois qu'il a été appelé ici. Voilà pour l'exécution du débogueur. Le débogueur est un outil très puissant qu'il faut prendre l'habitude d'utiliser.

Java pour les développeurs Android

Prenez en main la syntaxe et les concepts de Java pour vos développements d’applications pour Android. Abordez les variables, les chaînes de caractères, les conditions, etc.

7h01 (65 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :24 avr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !