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. L'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 !
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 :
la documentation fichier README Il est écrit que le nectar se transforme en miel dans un rapport de 2 pour 1 :
le fichier de documentation README contient une erreur et devra être mis à jour. Mettons à jour le fichier README :
hub JavaRush avec un look malin :)
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. Mais que faire? Bien sûr, vous pouvez le définirSystem.out.println
partout 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
Le 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:- 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.
- Clonez le projet depuis GitHub et importez-le via IDEA.
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:
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 :
-
Par méthode :
-
Par classe
- Bee.java:24 - dans la classe Bee à la ligne 24
- Main.java:14 - dans la classe Main à la ligne 14
Allons-y, entrons dans la nature du débogage
É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- 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.
main()
, il s'avère que non seulement la quantité de miel n'est pas comptée, mais qu'une erreur apparaît également... Vous 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 : C'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()
: et nous obtiendrons le programme arrêté au moment où l'exception avec cette icône est déclenchée . 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.
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é : L'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 ## 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 main
la méthode en mode Debug : Regardons 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 : Pour arrêter le programme, vous devez cliquer sur le carré rouge : Pour redémarrer l'application en mode débogage, vous devez cliquer sur la flèche : Ensuite, 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.
beeHive.populateHoney()
, nous devons appuyer sur F7, et nous allons continuer : Ensuite, 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.
## 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 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
- Le projet utilisé dans l'article
- IntelliJ IDEA et Debug : pas de plongée, mais du snorkeling
- L'amère vérité sur la programmation...
- Documentation officielle
- Types de points d'arrêt. Documentation officielle
- Comment un test d'entretien s'est transformé en une bibliothèque open source
- Créer un système de surveillance du prix des billets d'avion : un guide étape par étape [Partie 1]
- Guide pour créer un client pour l'API Skyscanner et le publier dans jCenter et Maven Central [Partie 1]
- Exploitation forestière : quoi, comment, où et avec quoi ?
GO TO FULL VERSION