Le débogage est utilisé pour suivre le processus en cours d'exécution du code. Habituellement, des exceptions se produisent pendant l'exécution du programme. L'activation du mode débogage peut analyser et localiser l'emplacement de l'exception et les modifications des paramètres pendant le processus en cours. Habituellement, nous pouvons également activer le mode Débogage pour suivre le processus en cours du code et apprendre le code source du framework tiers.
Apprenez donc à utiliser Debug dans Intellij IDEA, qui comprend principalement le contenu suivant :
1. Le début du débogage
2. Utilisation de base et touches de raccourci
3. Visualisation des variables
4. Expression de calcul
5. Step-in intelligent
6. Paramétrage des conditions de point d'arrêt
7. Multi -threading Débogage
8. Point d'arrêt de restauration
9. Interruption du débogage
10. Pièce jointe : activation de JRebel
Tout d'abord, jetons un œil à l'interface en mode Debug dans IDEA.
Voici l'interface après avoir démarré le mode débogage dans IDEA et entré le point d'arrêt. Il s'agit de Windows, et les icônes peuvent être légèrement différentes des icônes Mac. Parlons simplement des 8 endroits marqués dans l'image ci-dessous :
① Démarrez le service en mode Debug, et un bouton à gauche le démarre en mode Run. Pendant le développement, je démarre généralement le mode Debug directement pour faciliter le débogage du code à tout moment.
② Point d'arrêt : cliquez avec le bouton gauche dans la barre de numéro de ligne à gauche, ou utilisez la touche de raccourci Ctrl+F8 pour définir/annuler un point d'arrêt. La couleur de la ligne du point d'arrêt peut être définie par vous-même.
③ Fenêtre de débogage : une fois que la demande d'accès atteint le premier point d'arrêt, la fenêtre de débogage sera automatiquement activée. S'il n'est pas activé automatiquement, vous pouvez accéder aux paramètres pour le définir, comme le montre la figure 1.2.
④ Boutons de débogage : Il y a 8 boutons au total. Les principales fonctions de débogage correspondent à ces boutons. Vous pouvez visualiser les touches de raccourci correspondantes en passant la souris sur les boutons. Les mêmes fonctions correspondantes peuvent être trouvées dans la barre de menu Exécuter, comme le montre la figure 1.4.
⑤ Bouton Service : vous pouvez fermer/démarrer des services, définir des points d'arrêt, etc. ici.
⑥Pile d'appels de méthodes : toutes les méthodes transmises par le thread pour le débogage sont affichées ici. Si vous cochez le bouton [Afficher tous les cadres] dans le coin supérieur droit, les méthodes des autres bibliothèques de classes ne seront pas affichées, sinon il y aura beaucoup de méthodes.
⑦ Variables : Dans la zone des variables, vous pouvez afficher les variables de la méthode actuelle avant le point d'arrêt actuel. [Figure 1.2] : Cochez Afficher la fenêtre de débogage sur le point d'arrêt dans les paramètres, et la fenêtre de débogage sera automatiquement activée une fois que la requête entre dans le point d'arrêt
[Figure 1.3] : Si votre IDÉE Il n'y a pas de barre d'outils ou de barre d'état affichée en bas. Elle peut être ouverte dans View. L'affichage de la barre d'outils facilitera notre utilisation. Vous pouvez essayer ces quatre options vous-même.
[Figure 1.4] : Il existe des fonctions de débogage correspondantes dans la barre de menu Exécuter, et vous pouvez afficher les touches de raccourci correspondantes.
2. Utilisation de base et touches de raccourci
La fonction de débogage correspond principalement aux deux groupes de boutons 4 et 5 sur la figure. 1 :
1. Parlons d'abord du premier groupe de boutons. Il y a 8 boutons au total, de gauche à droite, ils sont les suivants :
[Figure 2.1. ]
> Step Over (F8) : Enjambez et descendez ligne par ligne. S'il y a une méthode sur cette ligne, vous n'entrerez pas la méthode.
> Entrez dans (F7) : S'il y a une méthode dans la ligne actuelle, vous pouvez saisir la méthode. Elle est généralement utilisée pour saisir une méthode personnalisée et n'entrera pas dans la bibliothèque de classe officielle. méthode, telle que la ligne 25. méthode put.
> Forcer l'entrée (Alt + Maj + F7) : Forcer l'entrée, vous pouvez entrer n'importe quelle méthode, vous pouvez utiliser cette méthode pour accéder à la bibliothèque de classes officielle lors de la visualisation du code source sous-jacent.
> Sortir (Maj + F8) : Sortez, quittez la méthode dans laquelle vous êtes entré jusqu'au point d'appel de la méthode. À ce moment, la méthode a été exécutée, mais l'affectation n'est pas terminée. > Drop Frame (aucun par défaut) : point d'arrêt de restauration, détaillé dans les chapitres suivants. > Exécuter vers le curseur (Alt + F9) : Exécutez jusqu'au curseur, vous pouvez positionner le curseur sur la ligne que vous devez afficher, puis utiliser cette fonction, le code s'exécutera jusqu'à la ligne du curseur sans Point de rupture. > Évaluer l'expression (Alt + F8) : Calculer l'expression, détaillée dans les chapitres suivants.2. Le deuxième groupe de boutons, un total de 7 boutons, est le suivant de haut en bas :
[Figure 2.2]
> : Réexécuter Le programme arrêtera le service, puis redémarrera le programme.
> Mettre à jour l'application 'tech' (Ctrl + F5) : Programme de mise à jour, généralement cette fonction peut être exécutée après que votre code ait été modifié. L'opération correspondante de cette fonction se trouve dans la configuration du service, comme le montre la figure 2.3.
> Reprendre le programme (F9) : Reprenez le programme. Par exemple, si vous avez deux points d'arrêt sur les lignes 20 et 25 et que vous exécutez actuellement jusqu'à la ligne 20, appuyez sur F9 pour passer au point d'arrêt suivant. (c'est-à-dire la ligne 25), puis appuyez sur F9 pour exécuter l'intégralité du processus car il n'y a aucun point d'arrêt plus tard.
> Pause du programme : mettez le programme en pause et activez le débogage. Aucune utilisation spécifique n'a encore été trouvée.
> Stop 'xxx' (Ctrl + F2) : Appuyez deux fois de suite pour fermer le programme. Parfois, vous constaterez que lorsque vous fermez le service et le redémarrez, il signalera que le port est occupé. En effet, le service n'est pas complètement fermé et vous devez donc supprimer tous les processus JVM.
> Afficher les points d'arrêt (Ctrl + Maj + F8) : afficher tous les points d'arrêt, qui seront abordés dans les chapitres suivants.
> Points d'arrêt muets : Mettre les points d'arrêt après avoir sélectionné cette option, tous les points d'arrêt deviendront gris et les points d'arrêt seront invalides. Appuyez sur F9 pour exécuter le programme directement. Cliquez à nouveau et le point d'arrêt devient rouge et est effectif. Si vous souhaitez uniquement désactiver un certain point d'arrêt, vous pouvez cliquer avec le bouton droit sur le point d'arrêt pour annuler Enabled, comme le montre la figure 2.4, et le point d'arrêt de cette ligne sera désactivé.
[Figure 2.3] : Programme de mise à jour, sur les actions 'Mise à jour', ce qui est fait lors de l'exécution de l'opération de mise à jour, sélectionnez généralement 'Mettre à jour les classes et les ressources', c'est-à-dire mettre à jour les classes et les fichiers de ressources.
Il est généralement préférable d'utiliser des plug-ins de déploiement à chaud, tels que JRebel, afin de ne pas avoir à redémarrer le service à chaque fois que vous modifiez le code. Comment activer JRebel est joint dans le dernier chapitre.
La désactivation suivante sur l'image est déclenchée lorsque la fenêtre IDEA perd le focus. Autrement dit, lorsque vous passez de l'idée au navigateur, l'idée fera automatiquement les choses pour vous. Généralement, vous pouvez définir Ne rien faire. provoquera C'est relativement consommateur de ressources.
三、Vue des variables
Pendant le processus de débogage, il est très nécessaire de suivre et d'afficher les modifications des variables. Voici quelques endroits où vous pouvez afficher les variables dans IDEA I. je crois que la plupart des gens les comprennent.
1. Comme suit, dans IDEA, la valeur de la variable actuelle sera affichée après la ligne où se trouve le paramètre.
[Figure 3.1]
[Figure 3.2]
[Figure 3.3]
3. Afficher dans les variables, qui affiche toutes les variables de la méthode actuelle.[Figure 3.4]
4. Dans Montres, cliquez sur Nouvelle montre et entrez les variables que vous souhaitez afficher. Ou vous pouvez le faire glisser des variables vers Watch pour l'afficher.[Image 3.5] Si vous constatez que vous n'avez pas de montres, c'est peut-être là que se trouve l'image ci-dessous.
[Image 3.6]
[Image 3.7]
4. Expression de calculDans Le L'expression de calcul mentionnée précédemment est affichée dans le bouton de la figure 4.1, Évaluer l'expression (Alt + F8). Vous pouvez utiliser cette opération pour calculer la valeur d'une expression pendant le débogage sans imprimer les informations.
[Figure 4.1]
1. Appuyez sur Alt + F8 ou sur le bouton, ou vous pouvez sélectionner une expression puis Alt + F8 pour faire apparaître la fenêtre permettant de calculer l'expression, comme suit, appuyez sur Entrée ou cliquez sur Évaluer pour calculer la valeur de l'expression.
Cette expression peut être non seulement une variable ou un paramètre général, mais aussi une méthode. Lorsque vous appelez plusieurs méthodes dans une ligne de code, vous pouvez ainsi visualiser la valeur de retour d'une méthode.
[Figure 4.2]
2. Définir les variables Dans la zone d'expression de calcul, vous pouvez modifier la valeur de la variable, ce qui nous permet parfois de déboguer divers types de variables. ça n'en vaut pas la peine.
[Figure 4.3]
Pensez-y, il existe plusieurs méthodes dans une seule ligne de code. , comment pouvez-vous choisir Entrée uniquement d'une certaine manière. J'ai déjà mentionné que vous pouvez utiliser Step Into (Alt + F7) ou Force Step Into (Alt + Shift + F7) pour saisir la méthode, mais ces deux opérations seront saisies séquentiellement selon l'ordre d'appel de la méthode, ce qui est plus gênant.
Ensuite, Smart Step Into est très pratique. Smart Step Into, cette fonction peut être vue dans Run, Smart Step Into (Shift + F7), comme le montre la figure 5.1
[ Figure 5.1]
Appuyez sur Shift + F7, cela localisera automatiquement la ligne de point d'arrêt actuelle et listera les méthodes qui doivent être saisies, comme le montre la figure 5.2, cliquez sur la méthode pour entrer à l'intérieur de la méthode.
S'il n'y a qu'une seule méthode, entrez directement, similaire à Force Step Into.
[Figure 5.2]
En définissant des conditions de point d'arrêt, le système s'arrêtera lorsque les conditions seront remplies . au point d'arrêt, sinon exécutez directement.
Habituellement, lorsque nous parcourons une collection ou un tableau relativement volumineux et définissons un point d'arrêt dans la boucle, devons-nous regarder les valeurs des variables une par une ? Cela doit être fatigant, et peut-être que vous l’avez manqué et que cela vaut la peine de le refaire.
1. Cliquez avec le bouton droit sur le point d'arrêt pour définir directement les conditions du point d'arrêt actuel, comme le montre la figure 6.1. Le point d'arrêt ne prend effet que lorsque je règle exist sur true.
[Figure 6.1]
2. Cliquez sur Afficher les points d'arrêt (Ctrl + Maj + F8) pour afficher tous les points d'arrêt.
Java Line Breakpoints affiche tous les points d'arrêt. Vérifiez la condition sur la droite pour définir les conditions du point d'arrêt.
Si vous cochez Enregistrer le message sur la console, la ligne de point d'arrêt actuelle sera affichée sur la console, comme le montre la figure 6.3
Si vous cochez Évaluer et enregistrer, vous pouvez calculer l'expression lors de l'exécution cette ligne de valeur de code et affichez le résultat sur la console.
[Image 6.2]
[Image 6.3]
3. Parlons du un à droite Filtres filtre, ceux-ci ne sont pas couramment utilisés en général, expliquons brièvement leur signification.
Filtres d'instance : Filtrage d'instance, entrez l'ID d'instance (l'ID d'instance dans la figure 6.5), mais je n'ai pas réussi ici, je ne sais pas pourquoi. Les amis qui le savent peuvent laisser un message.
Filtres de classe : le filtrage de classe, le filtrage basé sur le nom de la classe, a également échoué....
Nombre de passes : utilisé dans les boucles, si le point d'arrêt est dans la boucle, vous pouvez définir cette valeur , Après combien de fois la boucle s'arrête au point d'arrêt, les boucles suivantes s'arrêteront au point d'arrêt.
[Figure 6.4]
En définissant des points d'arrêt d'exception, lorsqu'une exception qui doit être interceptée se produit dans le programme, la ligne d'exception sera automatiquement localisée.
Comme le montre la figure 6.6, cliquez sur le signe + pour ajouter des points d'arrêt d'exception Java et ajouter des points d'arrêt d'exception. Entrez ensuite la classe d'exception qui nécessite des points d'arrêt, comme indiqué dans la figure 6.7. Vous pouvez alors voir les points d'arrêt d'exception ajoutés dans les points d'arrêt d'exception Java. J'ai ajouté un point d'arrêt d'exception NullPointerException ici, comme le montre la figure 6.8. Lorsqu'une exception de pointeur nul se produit, elle est automatiquement localisée sur la ligne Null Pointer Exception.[Image 6.6]
[Image 6.7] >
Normalement, lorsque nous déboguons, nous le faisons dans un seul thread et procédons étape par étape. Mais parfois, vous constaterez que lors du débogage, vous ne pouvez même pas lancer une autre requête ?
En effet, le niveau de blocage par défaut d'IDEA lors du débogage est ALL, ce qui bloquera les autres threads. Les autres threads ne s'exécuteront que lorsque le thread de débogage actuel sera terminé. Vous pouvez sélectionner Thread dans View Breakpoints, comme illustré dans la figure 7.1, puis cliquer sur Make Default pour le définir comme option par défaut.
[Figure 7.1]
Pour changer de fil de discussion, dans la liste déroulante des cadres de la figure 7.1, vous pouvez changer de fil de discussion actuel, comme indiqué ci-dessous, j'en ai deux ici Fil de débogage, passez à un autre et entrez dans un autre fil de débogage.
[Figure 7.1]
Lors du débogage, vous souhaitez suivre le processus encore sans faire une autre demande ?
1. Apprenez d'abord à connaître la pile d'appels de cette méthode, comme le montre la figure 8.1. Tout d'abord, demandez à entrer la méthode insertDemo de DemoController, puis appelez la méthode insert pour l'instant. . La méthode supérieure correspond à l'endroit où se trouve la méthode du point d'arrêt actuel.
[Figure 8.1]
2. Restauration du point d'arrêt
La restauration dite du point d'arrêt est en fait un retour au précédent Au début d'un appel de méthode, le test dans IDEA ne peut pas rembobiner ligne par ligne ni revenir au point d'arrêt précédent, mais revient à la méthode précédente.
Il existe deux façons de revenir en arrière. L'une est le bouton Drop Frame (Figure 8.2), qui revient progressivement en arrière en fonction de la méthode appelée, y compris d'autres méthodes de la bibliothèque de classes tierce (annulez l'option Afficher tout). Le bouton Frames affichera la méthode Library de classe tierce, comme le montre la figure 8.3).
La deuxième méthode consiste à sélectionner la méthode à restaurer sur la méthode de la pile d'appels, à cliquer avec le bouton droit et à sélectionner Drop Frame (Figure 8.4), à revenir à l'appel de méthode précédent de la méthode, puis à appuyer sur F9 (Reprendre le programme), vous pouvez voir que le programme est entré dans le point d'arrêt de cette méthode.
Mais il y a une chose à noter. La restauration du point d'arrêt ne peut refaire le processus que si l'état de certains paramètres/données a déjà changé, il ne peut pas être restauré à l'état précédent, comme les objets et. collections, données de base de données mises à jour, etc.
Image[8.2]
Image[8.3]
Image [8.4]
>
Vous souhaitez interrompre la requête pendant le débogage et ne pas passer par le processus restant ?
Parfois, après avoir constaté que les paramètres transmis sont erronés, nous ne voulons pas passer par le processus suivant. Comment interrompre cette requête (le processus suivant supprimera les données de la base de données...), devons-nous fermer le service et redémarrer le programme ? Eh bien, je faisais ça aussi.
Pour être précis, je n'ai pas trouvé de moyen d'interrompre directement la demande (autre que la fermeture du service), mais vous pouvez éviter le processus ultérieur via le retour forcé, c'est-à-dire le retour forcé, comme le montre la figure 9.1.
Cliquez sur Forcer le retour et la fenêtre Valeur de retour apparaît. Le type de retour de ma méthode est Map, je renvoie donc directement les résultats ici pour forcer le retour, afin qu'aucune autre étape ne soit effectuée. Ou vous pouvez créer un nouveau HashMap<>().
[Image 9.1]
[Image 9.2]
À l'heure actuelle, j'utilise JRebel comme outil de déploiement à chaud, et l'effet est tout à fait satisfaisant. La modification du code Java ou XML et d'autres fichiers de configuration peuvent être mis à jour à chaud. Parfois, lorsque le service est ouvert depuis longtemps ou lorsque de nombreux fichiers ont été modifiés, la mise à jour à chaud ne prend pas effet et le service doit être redémarré.
Voici juste une brève description d'une façon que j'ai vue sur Internet pour obtenir gratuitement des droits d'utilisation permanents (non crackés). Je ne sais pas quand cette méthode ne sera plus disponible.
① Vous avez d'abord besoin d'un compte Facebook ou Twitter (Twitter est le meilleur)
② Entrez sur ce site Web : https://my.jrebel.com/ et connectez-vous, comme le montre la figure 10.1.
③ Ensuite, vous pouvez obtenir votre code d'activation permanent dans Installer et Acticate.
④ Définissez le code d'activation dans Jrebel dans les paramètres, comme indiqué dans la figure 10.3. Si le plug-in JRebel n'est pas installé, recherchez et installez d'abord le plug-in JRebel dans Plugins.
[Image 10.1]
[Image 10.2]
[Image 10.3]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!