CodeGym /Blog Java /Random-FR /Débogage dans IntelliJ IDEA : guide du débutant
John Squirrels
Niveau 41
San Francisco

Débogage dans IntelliJ IDEA : guide du débutant

Publié dans le groupe Random-FR
Bonjour à tous dans la communauté CodeGym ! Aujourd'hui, parlons du débogage - qu'est-ce que c'est et comment déboguer dans IntelliJ IDEA. Cet article est destiné aux personnes ayant déjà un minimum de connaissances sur Java Core. Il n'y aura pas de frameworks ou de procédures compliquées pour publier des bibliothèques. Une balade tranquille. Alors installez-vous confortablement et commençons ! Débogage dans IntelliJ IDEA : guide du débutant - 1

Pourquoi avez-vous besoin du mode débogage

Clarifions tout de suite quelque chose pour nous : il n'y a pas de code sans bugs... C'est ainsi que fonctionne la vie. Donc, nous ne devrions pas tomber en morceaux et abandonner si notre code ne fonctionne pas comme prévu. Mais que devons-nous faire ? Eh bien, nous pourrions mettre System.out.printlndes instructions partout, puis passer au peigne fin la sortie de la console dans l'espoir de trouver une erreur. Cela dit, vous pouvez (et les gens le font) déboguer en utilisant une journalisation minutieuse. Mais si vous pouvez exécuter votre code sur une machine locale, il est préférable d'utiliser le mode Debug . Je tiens à noter tout de suite que dans cet article, nous envisagerons de déboguer un projet à l'aide d'IntelliJ IDEA.

Qu'est-ce que le mode débogage ?

Le mode débogage sert à déboguer (vérifier) ​​le code en cours d'exécution. Cela vous permet d'arrêter l'exécution à des endroits désignés et de voir comment les choses progressent. Il vous permet de comprendre l'état du programme à un endroit particulier du code. C'est comme être capable d'arrêter l'horloge et de tout regarder de côté. Cool, non ? Notre objectif est d'apprendre rapidement et facilement à déboguer des applications à l'aide de notre environnement de développement bien-aimé IntelliJ IDEA.

Ce dont vous avez besoin pour commencer le débogage

Voici quelques conseils gratuits : lors de la lecture de cet article, faites tout ce qui sera décrit ici - vous avez tout ce que vous devez faire pour suivre. De quoi as-tu besoin:
  1. IntelliJ IDEA version 2019.3.1 ou supérieure. Au cas où quelqu'un ne l'aurait pas, voici un lien où vous pouvez le télécharger . Téléchargez l'édition communautaire — c'est la version que j'utiliserai.
  2. Clonez ce projet GitHub et importez-le via IDEA.
Ouvrez IDEA : Débogage dans IntelliJ IDEA : guide du débutant - 2sélectionnez le projet de présentation de débogage et appuyez sur OK . Ensuite, vous verrez la fenêtre suivante : Débogage dans IntelliJ IDEA : guide du débutant - 3Laissez les options sélectionnées : Importer le projet depuis des sources externes et Maven . Cliquez sur Terminer . Maintenant que nous avons importé le projet, nous pouvons décrire le reste du processus avec un exemple vivant.

Juste un peu de théorie... promis :D

Pour commencer à déboguer ne serait-ce qu'un peu, vous devez comprendre ce qu'est un point d'arrêt et vous familiariser avec quelques raccourcis clavier. Un point d'arrêt est un marqueur spécial qui indique où vous souhaitez arrêter l'exécution de l'application, éventuellement en fonction de l'état de l'application. Vous pouvez définir un point d'arrêt soit en cliquant avec le bouton gauche sur le panneau latéral gauche, soit en cliquant sur l'emplacement du code et en appuyant sur Ctrl+F8 . Examinons trois types de points d'arrêt : les points d'arrêt de ligne, les points d'observation de champ et les points d'arrêt de méthode. Voici à quoi ça ressemble:
  • Sur une ligne :

    Débogage dans IntelliJ IDEA : guide du débutant - 4

    Si une instruction a une expression lambda, alors IDEA vous invite à choisir de placer le point d'arrêt sur l'intégralité de l'instruction ou spécifiquement sur l'expression lambda :

    Débogage dans IntelliJ IDEA : guide du débutant - 5
  • Sur une méthode :

    Débogage dans IntelliJ IDEA : guide du débutant - 6
  • Sur une classe :

    Débogage dans IntelliJ IDEA : guide du débutant - 7
Les points d'arrêt peuvent être supprimés en suivant les mêmes étapes que celles utilisées pour les ajouter. Il y a des situations où vous voudrez les désactiver (muter). Pour ce faire, recherchez l' Débogage dans IntelliJ IDEA : guide du débutant - 8icône dans la section Debug. Cela désactivera tous les points d'arrêt. Pour voir quels points d'arrêt ont été définis, vous pouvez soit aller dans la section Déboguer dans le coin inférieur gauche et trouver l' Débogage dans IntelliJ IDEA : guide du débutant - 9icône, soit appuyer sur Ctrl+Maj+F8 : Débogage dans IntelliJ IDEA : guide du débutant - 10En passant à la liste des points d'arrêt, nous verrons ce qui suit : Débogage dans IntelliJ IDEA : guide du débutant - 11Il y a deux points d'arrêt ici:
  • Bee.java:24 — dans la classe Bee à la ligne 24
  • Main.java:14 — dans la classe Main à la ligne 14
Veuillez noter que ces points d'arrêt ne seront pas définis automatiquement si vous avez cloné le projet : vous devrez les définir vous-même ! Il existe également une section Java Exception Breakpoints . C'est très utile. Ici, vous pouvez ajouter un point d'arrêt implicite afin que le programme s'arrête avant de lever une exception ou une exception spécifique. Nous allons ajouter un point d'arrêt implicite pour RuntimeException. Cela est facile à faire. Trouvez l'icône "+" dans le coin supérieur gauche. Cliquez dessus et sélectionnez Java Exception Breakpoints : Débogage dans IntelliJ IDEA : guide du débutant - 12Dans la fenêtre qui apparaît, écrivez le nom de l'exception que vous souhaitez ajouter, sélectionnez dans la liste et cliquez sur OK : Débogage dans IntelliJ IDEA : guide du débutant - 13Cela conclut notre introduction sur la façon de configurer les choses, alors maintenant nous' Je vais passer à la pratique.

Allons faire cette chose appelée débogage !

Je viens d'une longue lignée d'apiculteurs familiaux, donc le projet que j'ai créé pour illustrer le débogage décrit des modèles du processus par lequel les abeilles collectent le nectar, transforment le nectar en miel, puis obtiennent le miel de la ruche. Selon le fichier de documentation README, qui se trouve dans le répertoire racine du projet, le comportement attendu de toutes les fleurs dont le nectar est collecté est que la quantité de miel collecté (qui prend la forme d'un double ) soit égale à la moitié de le nectar récolté. Le projet a les classes suivantes :
  • Abeille - une abeille ouvrière ordinaire
  • BeeQueen - la reine des abeilles
  • BeeHive — la ruche
  • HoneyPlant - une plante à miel (source de nectar) à partir de laquelle le nectar est collecté
  • Main - c'est là que nous trouvons public static void main(), la méthode où l'exécution commence.
Si nous exécutons la main()méthode, nous constatons que non seulement notre programme ne calcule pas la quantité de miel, mais qu'il génère également une exception... Débogage dans IntelliJ IDEA : guide du débutant - 14Nous devons enquêter et déterminer quel est le problème. À partir de la pile de traces dans le coin inférieur droit, nous pouvons voir qu'une exception RuntimeException a été lancée HoneyPlant.java:20: Débogage dans IntelliJ IDEA : guide du débutant - 15c'est exactement ce dont nous parlions ci-dessus. Surveillons cette RuntimeException en exécutant la main()méthode en mode débogage. Pour ce faire, cliquez sur la flèche verte en forme de triangle dans IntelliJ IDEA à côté de la main()méthode. Débogage dans IntelliJ IDEA : guide du débutant - 16En conséquence, nous arrêterons le programme juste avant que l'exception ne soit levée et nous verrons cette icône : Débogage dans IntelliJ IDEA : guide du débutant - 17Débogage dans IntelliJ IDEA : guide du débutant - 18Pour obtenir toutes les informations disponibles, nous devons regarder dans la section Debug. Il a une variablevolet qui affiche toutes les variables disponibles dans cette partie de l'application :
  • nectar = 1,0 ;
  • nectarCapacity = -1.0.
Lever l'exception a du sens, car une plante mellifère ne peut pas avoir une quantité négative de nectar. Mais pourquoi cela se produit-il ? Après tout, aux lignes 15 à 17, nous vérifions si l'approvisionnement en nectar est épuisé et renvoyons zéro si c'est le cas :

	if (nectar == 0) {
   	     return 0;
}
Mais le problème est que nous vérifions la mauvaise variable. Il s'agit d'une erreur dans le code. Au lieu de vérifier la quantité de nectar disponible dans la fleur (qui est stockée dans la variable nectarCapacity ), le programme vérifie la valeur du paramètre nectar de la méthode , qui est la quantité de nectar que nous voulons prélever de la fleur. C'est ici! Notre premier bogue ! Après avoir corrigé cela, nous obtenons le code suivant :

	if (nectarCapacity == 0) {
   	     return 0;
}
Exécutez maintenant la main()méthode normalement (Run 'Main.main()'). Aucune exception n'est levée et le programme fonctionne : Débogage dans IntelliJ IDEA : guide du débutant - 19l'application s'exécute jusqu'à la fin et donne la réponse suivante :

"33.0 honey was produced by 7 bees from 2 honey plants"
Tout irait bien maintenant, mais cette réponse est incorrecte... Selon le fichier de documentation README, le nectar est converti en miel dans un rapport de 2 à 1 :

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
La méthode principale a clairement deux plants de miel avec 30 et 40 unités de nectar, respectivement. Nous devrions donc finalement nous retrouver avec 35 unités de miel. Mais le programme nous dit que nous en avons 33. Où sont passées les deux autres unités ? Découvrons-le! Pour ce faire, définissez un point d'arrêt dans la Main.main()méthode à la ligne 28, où beeHive.populateHoney()est appelée et exécutez la main()méthode en mode Debug : Débogage dans IntelliJ IDEA : guide du débutant - 20Nous allons examiner ce point plus en détail. Le programme a cessé de s'exécuter avant d'exécuter la ligne 28. Dans la partie inférieure, nous voyons la section Debug, qui affiche toutes les informations disponibles sur l'application en cours d'exécution. Comme déjà mentionné, le volet Variables contient toutes les variables et tous les objets disponibles dans cette partie de l'application. Le volet Frames affiche les étapes par lesquelles passe l'application — vous pouvez regarder les étapes précédentes (frames) et voir toutes les données locales. Pour continuer à exécuter le programme, vous pouvez appuyer sur F9 ou sur l'icône verte, comme indiqué ci-dessous : Débogage dans IntelliJ IDEA : guide du débutant - 21Pour arrêter le programme, cliquez sur le carré rouge : Débogage dans IntelliJ IDEA : guide du débutant - 22Pour redémarrer l'application en mode débogage, cliquez sur la flècheDébogage dans IntelliJ IDEA : guide du débutant - 23 : application pas à pas à l'aide de deux touches :
  • F8 — Parcourez le code sans entrer dans les méthodes ;
  • F7 - Parcourez le code et entrez dans les méthodes.
Dans notre cas, nous devons appuyer sur F7 pour entrer dans la beeHive.populateHoney()méthode. En y entrant, nous obtenons : Débogage dans IntelliJ IDEA : guide du débutant - 24Nous allons maintenant utiliser F8 pour parcourir cette méthode et décrire ce qui s'y passe :
  • Ligne 25 — L'API Stream est utilisée pour collecter le nectar de toutes les abeilles
  • Ligne 26 — Le miel nouvellement créé est ajouté au miel existant ;
  • Ligne 27 — 2 unités de miel sont allouées à la reine
  • Ligne 28 — Ces deux unités sont soustraites de la quantité totale de miel
  • Ligne 29 — La reine mange ce miel.
C'est donc là que sont allées les deux unités manquantes ! Hourra! Après avoir discuté avec un analyste commercial, nous concluons que le fichier README de la documentation contient une erreur et doit être mis à jour. Mettons à jour le fichier README :

## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Avaient fini. Nous avons corrigé tous les bugs que nous avons trouvés. On peut tranquillement continuer avec un air suffisant, siroter un café et lire des articles sur Stack Overflow CodeGym :)

Résumons

Dans cet article, nous avons appris :
  • le travail de tout le monde comporte des erreurs et le débogage est un excellent moyen de les corriger
  • qu'est-ce qu'un point d'arrêt et quels types de points d'arrêt existe-t-il ?
  • comment définir un point d'arrêt d'exception
  • comment parcourir le code en mode débogage

Article à lire

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION