JavaRush /Blog Java /Random-FR /Déboguer dans Intellij IDEA : un guide pour les débutants...
Roman Beekeeper
Niveau 35

Déboguer dans Intellij IDEA : un guide pour les débutants

Publié dans le groupe Random-FR
Bonjour à tous, communauté JavaRush. Aujourd'hui, nous allons parler du débogage : qu'est-ce que c'est et comment déboguer dans Intellij IDEA. Déboguer dans Intellij IDEA : un guide pour les débutants - 1L'article est destiné aux personnes ayant déjà une connaissance minimale de Java Core. Il n’y aura pas de cadres ni de processus complexes pour publier des bibliothèques. Promenade facile. Alors installez-vous confortablement et commençons !

Pourquoi avez-vous besoin de Debug ?

Soyons clairs tout de suite : il n'y a pas de code sans bugs... C'est ainsi que fonctionne la vie. Par conséquent, nous ne devrions pas immédiatement devenir mous et tout abandonner si le code ne fonctionne pas comme prévu. Déboguer dans Intellij IDEA : un guide pour les débutants - 2Mais que faire? Bien sûr, vous pouvez le définir System.out.printlnpartout où vous le pouvez, puis trier le résultat dans le terminal dans l'espoir de trouver une erreur. Pourtant, c'est possible... et ils le font, et ils le font soigneusement en utilisant la journalisation (vous pouvez en savoir plus ici ). Mais s'il est possible d'exécuter le code sur la machine locale, il est préférable d'utiliser Debug . Je voudrais tout de suite noter que dans cet article, nous envisagerons de déboguer un projet dans Intellij IDEA. Si vous souhaitez en savoir plus sur le débogage à distance, voici un article de notre ressource .

Qu'est-ce que le débogage

Déboguer dans Intellij IDEA : un guide pour les débutants - 3Le débogage est le processus de débogage (vérification) du code, lorsque pendant son exécution, vous pouvez vous arrêter à un endroit désigné et observer la progression de l'exécution. Comprendre l'état du programme à un certain endroit. C’est exactement comme si l’on pouvait arrêter la vie et tout regarder de l’extérieur. Cool, non ? Notre objectif est d'apprendre rapidement et facilement à déboguer des applications à l'aide de notre environnement de développement préféré, Intellij IDEA.

Ce dont vous avez besoin pour commencer le débogage

Je donne des conseils gratuits : pendant que vous lisez l'article, faites tout ce qui sera décrit ici, heureusement il y a tout pour cela. De quoi avez-vous besoin:
  1. Environnement de développement Intellij IDEA version 2019.3.1 et 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 car c'est ce que j'utiliserai.
  2. Clonez le projet depuis GitHub et importez-le via IDEA.
Ouvrez IDEA : Déboguer dans Intellij IDEA : un guide pour les débutants - 4sélectionnez le projet de présentation de débogage , cliquez sur OK et obtenez : Déboguer dans Intellij IDEA : un guide pour les débutants - 5Quittez le projet d'importation à partir de sources externes, Maven et cliquez sur Terminer . Après avoir importé le projet, nous pouvons décrire le processus à l'aide d'un exemple réel.

Un peu de théorie... promis :D

Pour commencer un peu le débogage, vous devez comprendre ce qu'est breakPoint et comprendre quelques raccourcis clavier dont vous avez besoin pour commencer. BreakPoint est un marqueur spécial qui affiche l'emplacement ou l'état auquel l'application doit être arrêtée. Vous pouvez définir un point d'arrêt soit en cliquant avec le bouton gauche sur la barre latérale gauche, soit en cliquant sur l'emplacement du code et en appuyant sur Ctrl + F8 . Les points d'arrêt sont de trois types : marque de ligne, marque de variable et marque de méthode. Cela ressemble à ceci :
  • Par ligne:

    Déboguer dans Intellij IDEA : un guide pour les débutants - 6

    s'il y a un lambda dans l'expression, alors IDEA vous propose le choix : mettre l'expression sur toute la ligne ou spécifiquement dans le lambda :

    Déboguer dans Intellij IDEA : un guide pour les débutants - 7
  • Par méthode :

    Déboguer dans Intellij IDEA : un guide pour les débutants - 8
  • Par classe

    Déboguer dans Intellij IDEA : un guide pour les débutants - 9
Les points d'arrêt peuvent être supprimés en suivant les mêmes étapes que lors de leur ajout. Il existe des situations où vous devez les rendre inactifs (muets). Pour ce faire, dans la section Débogage, vous pouvez trouver une icône Déboguer dans Intellij IDEA : un guide pour les débutants - 10qui rendra tous les points d'arrêt inactifs. Pour voir quels points d'arrêt ont déjà été définis, vous pouvez soit aller dans Debug dans le coin inférieur gauche et trouver l'icône Déboguer dans Intellij IDEA : un guide pour les débutants - 11, soit appuyer sur Ctrl+Shift+F8 : Déboguer dans Intellij IDEA : un guide pour les débutants - 12Lorsque nous allons dans la liste des points d'arrêt, nous verrons : Déboguer dans Intellij IDEA : un guide pour les débutants - 13Il 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
Je tiens à préciser que lorsque vous clonez un projet, vous n'aurez pas ces BreakPoints : vous devez les définir vous-même ! Il existe également une section Java Exception Breakpoints . Une chose très utile. En l'utilisant, 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. Ajoutons un point d'arrêt implicite pour RuntimeException. Cela se fait facilement : dans le coin supérieur gauche se trouve un signe plus « + ». Cliquez dessus et sélectionnez Java Exceptions Breakpoints : Déboguer dans Intellij IDEA : un guide pour les débutants - 14Dans la fenêtre qui apparaît, écrivez le nom de l'exception qui doit être ajoutée, sélectionnez dans la liste proposée et cliquez sur OK : Déboguer dans Intellij IDEA : un guide pour les débutants - 15Nous terminons ce programme pédagogique et passons à la pratique.

Allons-y, entrons dans la nature du débogage

Déboguer dans Intellij IDEA : un guide pour les débutants - 16Étant donné que je suis apiculteur héréditaire, pour la présentation du débogage, j'ai créé un projet qui décrit le processus de collecte du nectar par les abeilles, de transformation du nectar en miel et d'obtention du miel de la ruche. Sur la base de la documentation du fichier README, qui se trouve à la racine du projet, nous lisons : comportement attendu - de toutes les fleurs dont le nectar est collecté (en valeur double ), une quantité de miel sera collectée égale à la moitié de le nectar récolté. Le projet comprend les classes suivantes :
  • Abeille - une abeille ouvrière ordinaire ;
  • BeeQueen - reine des abeilles ;
  • BeeHive - ruche ;
  • HoneyPlant - plante mellifère à partir de laquelle le miel est récolté ;
  • Principal - où public static void main()se trouve la méthode dans laquelle le projet démarre.
Si vous exécutez la méthode main(), il s'avère que non seulement la quantité de miel n'est pas comptée, mais qu'une erreur apparaît également... Déboguer dans Intellij IDEA : un guide pour les débutants - 17Vous devez regarder ce qui ne va pas ici. À partir de la trace de pile dans le coin inférieur droit, nous pouvons voir que dans HoneyPlant.java:20, une RuntimeException est levée : Déboguer dans Intellij IDEA : un guide pour les débutants - 18C'est exactement notre cas : il y a une RuntimeException, ajoutons une recherche d'une telle exception, comme décrit ci-dessus, et exécutons main()la méthode dans Mode débogage. Pour ce faire, cliquez sur la flèche triangulaire verte dans Intellij IDEA avant la méthode main(): Déboguer dans Intellij IDEA : un guide pour les débutants - 19et nous obtiendrons le programme arrêté au moment où l'exception avec cette icône est déclenchée Déboguer dans Intellij IDEA : un guide pour les débutants - 20Déboguer dans Intellij IDEA : un guide pour les débutants - 21. Pour obtenir des informations complètes, vous devez regarder dans la section Débogage. Il contient Variables , qui affiche toutes les variables disponibles dans cette partie de l'application :
  • nectar = 1,0 ;
  • nectarCapacity = -1,0.
L'exception est équitable, puisque la valeur de la quantité de nectar contenue dans la plante mellifère ne peut pas être négative. Mais pourquoi cela arrive-t-il ? Après tout, il y a une vérification que si le nectar s'épuise, une valeur nulle est renvoyée dans les lignes 15 à 17 :
if ( nectar == 0 ) {
         return 0;
}
Mais le problème, c'est qu'il vérifie la mauvaise variable... et c'est un bug dans le code. Au lieu de vérifier la valeur du nectar dans la fleur, qui se trouve dans la variable nectarCapacity , le programme vérifie la valeur de nectar , qui entre dans la méthode et correspond à la quantité qu'il souhaite retirer du nectar. Voilà, le premier bug ! Par conséquent, nous le disons correctement et obtenons l'expression :
if ( nectarCapacity == 0) {
         return 0;
}
Ensuite, nous exécutons main()la méthode en mode normal (Run `Main.main()`)et il n'y a plus d'erreur, le programme a fonctionné : Déboguer dans Intellij IDEA : un guide pour les débutants - 22L'application a fonctionné et a donné la réponse : « 33,0 miel ont été produits par 7 abeilles à partir de 2 plantes mellifères » . Tout irait bien, mais la réponse est faux... Tout cela parce que dans la documentation fichier README Il est écrit que le nectar se transforme en miel dans un rapport de 2 pour 1 :
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
De la méthode principale, on peut voir qu'il y a deux plantes mellifères, respectivement 30 et 40 unités de nectar, donc au final vous devriez obtenir 35 unités de miel. Et il écrit que 33. Où sont passées les deux autres unités ?... Maintenant, nous allons le découvrir ! Pour ce faire, il faut mettre un point d'arrêt dans la méthode Main.main()sur la ligne n°28, où elle est exécutée beeHive.populateHoney()et exécuter mainla méthode en mode Debug : Déboguer dans Intellij IDEA : un guide pour les débutants - 23Regardons ce point de plus près. Le programme s'est arrêté avant d'exécuter la 28ème ligne. En bas, nous voyons la section Debug, qui décrit toutes les informations sur l'application en cours d'exécution. La partie Variables, comme déjà mentionné, contient toutes les variables et objets accessibles depuis cette partie de l'application. La partie Frames montre les étapes parcourues par l'application, vous pouvez consulter l'étape précédente et obtenir toutes les données locales. Pour que le programme continue de fonctionner, vous pouvez appuyer sur F9 ou sur l'icône verte, comme indiqué ci-dessous : Déboguer dans Intellij IDEA : un guide pour les débutants - 24Pour arrêter le programme, vous devez cliquer sur le carré rouge : Déboguer dans Intellij IDEA : un guide pour les débutants - 25Pour redémarrer l'application en mode débogage, vous devez cliquer sur la flèche : Déboguer dans Intellij IDEA : un guide pour les débutants - 26Ensuite, pour parcourir pas à pas l’application, vous pouvez utiliser deux touches :
  • F8 - parcourez une section de code et n'entrez pas dans les méthodes internes ;
  • F7 - parcourez une section de code et entrez les méthodes internes.
Par conséquent, pour mettre la méthode en service beeHive.populateHoney(), nous devons appuyer sur F7, et nous allons continuer : Déboguer dans Intellij IDEA : un guide pour les débutants - 27Ensuite, nous passons en mode débogage en utilisant F8 en utilisant cette méthode jusqu'à la fin et décrivons ce qui se passe dans cette méthode :
  • Ligne 25 - L'API Stream est utilisée pour collecter le miel de toutes les abeilles ;
  • 26ème ligne - du miel est ajouté à celui existant ;
  • 27ème ligne - 2 unités de miel sont allouées à la reine ;
  • 28ème ligne - ces deux unités sont soustraites de la quantité totale de miel ;
  • Ligne 29 - l'utérus mange ce miel.
C'est là que sont allées ces deux unités, hourra ! Après avoir communiqué avec un analyste commercial, nous arrivons à la conclusion que le fichier de documentation README contient une erreur et devra être mis à jour. Mettons à jour le fichier README :
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
Et ça y est : tous les bugs trouvés ont été corrigés, on peut continuer sereinement à boire du café et à lire des articles sur le hub JavaRush avec un look malin :)

Résumer

Dans cet article, nous avons compris que :
  • il n'y a pas de travail sans erreurs et le débogage est un excellent moyen de les résoudre ;
  • qu'est-ce qu'un point d'arrêt et quels types existe-t-il ;
  • comment configurer le point d'arrêt d'exception ;
  • Comment naviguer en mode débogage.

Article à lire

Voir aussi mes autres articles :
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION