En tant que développeur, il est nécessaire de maîtriser les compétences de débogage dans l'environnement de développement. Lors de la rédaction de programmes Java, nous rencontrons souvent divers problèmes inexplicables. Afin de détecter où le programme est problématique, nous devons souvent ajouter des journaux pour voir la valeur des variables, donc le débogage est très gênant. Supposons que je passe 1 heure par jour à déboguer ma candidature, ce sera beaucoup de temps s'il s'accumule. Pour cette raison, utilisez ce temps pour valoriser et comprendre toutes les fonctionnalités qui nous font déboguer plus facilement. Cela peut vous faire gagner du temps et rendra également votre vie plus confortable et détendue.
1. Vue de débogage
Les fenêtres les plus couramment utilisées dans le débogage sont:
| fenêtre | illustrer |
|---|---|
| Débogage | Affiche principalement la pile d'appels de méthode de thread actuelle, ainsi que le nombre de lignes de code (code avec des informations de débogage) |
| Fenêtre de points d'arrêt | => Fenêtre de liste de points d'arrêt, qui peut faciliter l'ajout de points d'arrêt, la définition des conditions de point d'arrêt, la suppression des points d'arrêt, etc. |
| Fenêtre de variables | => Afficher la variable locale de la méthode actuelle, la méthode non statique, y compris cette application, peut modifier et modifier la valeur de la variable |
| Fenêtre d'édition de code | => Inutile d'en dire plus |
| Fenêtre de console de sortie | => Journaux et autres contenus de sortie. Pendant le débogage, vous pouvez définir le niveau d'attention des composants sur un peu plus bas pour obtenir plusieurs informations de sortie. |
De plus, les fenêtres auxiliaires sont:
| fenêtre | illustrer |
|---|---|
| Fenêtre d'expression d'expression | => Écrivez l'expression des données que vous devez observer ou modifier la valeur du compteur |
| Fenêtre d'affichage | => Peut exécuter des blocs de code, du contenu de sortie, etc. dans l'affichage |
| Fenêtre de contour | => Afficher les méthodes, variables, etc. de la classe actuelle |
| Tapez la fenêtre de la hiérarchie | => Vérifiez le niveau d'héritage de la classe actuelle, y compris les interfaces d'implémentation et les niveaux d'héritage de classe |
| Fenêtre de hiérarchie d'appel de la relation de méthode | => Vérifiez quelles méthodes sont appelées, quelles classes sont appelées et quelle ligne est la méthode correspondante qui peut être ouverte directement |
| Résultats de la recherche Fenêtre de recherche | => Combinant des touches de raccourci, vous pouvez afficher les emplacements de code qui sont référencés ou définis dans les ensembles de travail, de projet et de travail. |
1) Vue complète de la fenêtre:
2) Affiche de débogage (vue de la pile de threads):
La vue de débogage vous permet de gérer le programme débogué et exécuté sur le Workbench. Il montre les cadres de pile des threads suspendus dans le programme que vous déboguez, et chaque fil du programme apparaît comme un nœud de l'arborescence. Il montre le processus pour chaque cible qui s'exécute. Si le thread est suspendu, son cadre de pile s'affiche comme un élément enfant. Voici quelques boutons de débogage couramment utilisés:
1. Indique que l'implémentation actuelle continue de s'exécuter jusqu'au prochain point d'arrêt et que la clé de raccourci est F8.
2. Cela signifie interrompre l'ensemble du processus
3. Cela signifie saisir la méthode actuelle et la clé de raccourci est F5.
4. Cela signifie exécuter la ligne de code suivante et la clé de raccourci est F6.
5. Cela signifie sortir de la méthode actuelle et retourner à la couche d'appel. La clé de raccourci est F7.
6. Représentant la pile du thread actuel, à partir de laquelle vous pouvez voir quel code est en cours d'exécution, et l'ensemble du processus d'appel, ainsi que le numéro de ligne du code
Introduction détaillée:
Ignorez tous les points d'arrêt: définissez tous les points d'arrêt pour sauter. Après le réglage de Skip tous les points d'arrêt, il y aura une barre oblique sur tous les points d'arrêt, ce qui indique que le point d'arrêt sera ignoré et que le fil ne sera pas suspendu au point d'arrêt.
Drop to Frame: cette commande permet au programme de revenir au début de la méthode actuelle et de recommencer l'exécution. Vous pouvez réexécuter le cadre de pile Java. Vous pouvez sélectionner une trame de pile spécifiée, puis cliquez sur Drop dans le cadre, afin que vous puissiez réintégrer la trame de pile spécifiée. Faites attention à l'utilisation de Drop to Frame:
1. Impossible de tomber dans la méthode dans la pile de méthode déjà exécutée.
2. Lors de la décharge dans le cadre de pile, la valeur d'origine des données globales ne sera pas modifiée. Par exemple, un verter contenant des éléments ne sera pas effacé.
Filtres d'étape: cette fonction est relativement simple. Lorsque nous voulons ignorer certaines classes auxquelles nous ne faisons pas attention lors du débogage, nous pouvons activer les filtres à étape pour le filtrage. Le programme continuera de s'exécuter jusqu'à ce qu'une position non filtrée ou un point d'arrêt soit rencontré. La fonction des filtres à pas se compose de quatre éléments: utilisez des filtres à pas, modifiez les filtres à pas, le type de filtre et le package de filtre. Les opérations spécifiques sont les suivantes:
Étape 1: Windows -> Préférences -> Java -> Debug -> Filtrage de pas.
Étape 2: Sélectionnez «Utiliser des filtres à étape»
Étape 3: Sélectionnez l'option souhaitée à l'écran. Vous pouvez ajouter une partie du code dans votre propre base de code.
Étape 4: cliquez sur «postuler»
En principe, la commande Edit Step Filter est utilisée pour configurer les règles de filtre étape, tandis que le type de filtre et le package filtrant se réfèrent respectivement aux types Java filtrés et au package Java respectivement.
Return de l'étape: rebondissez de la méthode actuelle. Pendant l'exécution de la méthode appelée, l'utilisation de Step Return sautera de la méthode et reviendra à la méthode qui appelle la méthode après avoir exécuté tout le code de la méthode actuelle.
Étape: Lors de l'exécution d'une seule étape, lors de la rencontre d'une sous-fonction dans la fonction, il n'entrera pas dans la sous-fonction pour effectuer une seule étape, mais arrêtera l'exécution entière de la sous-fonction, c'est-à-dire que la sous-fonction entière est prise en une seule étape.
Entrez: Entrez dans: Entrez, entrez et continuez à intervenir lors de la rencontre d'une sous-fonction.
CV: Restauration du fil pause et sautant directement de la position actuelle à la position de point d'arrêt suivant.
Suspendre: suspendre le thread sélectionné et vous pouvez parcourir ou modifier le code, vérifier les données, etc.
Eclipse prend en charge la suspension et la récupération du thread par suspension et reprendre. D'une manière générale, la suspension convient au débogage de programmes multithreads. Lorsque nous devons afficher le cadre de pile et les valeurs variables d'un certain thread, nous pouvons suspendre le thread via la commande suspendre. Le CV est utilisé pour la récupération.
Il existe deux types de CV qui nécessitent une attention:
La première consiste à modifier le code du programme pendant le processus de débogage, à l'enregistrer et à cliquer sur le CV, et le programme sera temporairement suspendu au point d'arrêt.
La seconde est que lorsque le programme lance une exception, exécutez le curriculum vitae et que le programme sera également temporairement suspendu au point d'arrêt.
Terminez: Eclipse termine le débogage des programmes locaux via la commande terminale.
Déconnexion: Eclipse utilise la commande Disconnect pour terminer les connexions de socket aux JVM distants.
1. Débogage et exécution
| marque | Fonction | clé de raccourci | décrire |
|---|---|---|---|
| 6.4 | Informations sur étape | F5 | -> Entrez dans (s'il y a un appel de méthode, il entrera la méthode d'appel pour le débogage); |
| 6.4 | Dépasser | F6 | -> sauter étape par étape (dans n'importe quel appel de méthode qui n'entre pas la ligne, exécute directement la ligne de code actuelle et passez à la ligne suivante); |
| 6.4 | Retour de pas | F7 | -> Renvoie en une seule étape (exécutez la méthode actuelle, proposez la méthode actuelle de la pile d'appels et revenez à l'emplacement d'appel où la méthode actuelle est appelée); |
| 6.5 | CV | F8 | -> reprend l'exécution normale (jusqu'à ce que le prochain point d'arrêt soit rencontré); |
| 7.4 | Courir à la ligne | Ctrl + r | -> Exécuter à la ligne actuelle (tous les points d'arrêt au milieu seront ignorés et exécuteront sur la ligne où se trouve le curseur actuel); |
| 6.3 | Tomber dans le cadre | aucun | -> Retour au début de la méthode spécifiée, cette fonction est assez bonne. Cliquez avec le bouton droit sur une méthode sur la pile d'appels de méthode et sélectionnez Drop to Frame to Exécuter à partir du début de la méthode, par exemple, réexécutez cette méthode. Vous pouvez utiliser Drop to Frame sur cette méthode pour le réexécuter à partir de la première ligne de cette méthode. Bien sûr, pour les méthodes avec des effets secondaires, tels que les opérations de base de données, la modification du contenu de l'objet des paramètres passés, etc., il peut être réexécuté le contenu du contenu que vous souhaitez. |
| 6.1 + 6.2 | Cuivre de copie | aucun | -> Copiez les informations actuelles de pile de threads |
Si vous devez exclure certaines classes, packages, etc.
Propriétés d'A6: Informations sur le démarrage du processus Java, y compris les paramètres de démarrage de la console, les paramètres d'environnement, etc. S'il y a un problème avec les paramètres de démarrage des paramètres, vous pouvez d'abord vérifier si les paramètres de démarrage réels ici sont incorrects. Vous pouvez également afficher les options pertinentes pour les machines virtuelles afin de prendre en charge le débogage.
2. Affichage des données
| marque | Fonction | clé de raccourci | décrire |
|---|---|---|---|
| 7.4 | Inspecter | ctrl + shift + i | -> Afficher la variable sélectionnée, la valeur d'expression ou le résultat d'exécution, appuyez à nouveau sur Ctrl + Shift + I pour ajouter l'expression ou la valeur actuelle à la fenêtre Expressions à afficher; |
| 7.4 | Afficher | Ctrl + Shift + D | -> Afficher la variable, la valeur d'expression sélectionnée ou le résultat d'exécution. Appuyez à nouveau sur Ctrl + Shift + D pour ajouter l'expression ou la valeur actuelle à la fenêtre d'affichage pour afficher; |
| 7.4 | Exécuter | ctrl + u | -> Exécuter l'expression de sélection; |
| 7.4 | Courir à la ligne | ctrl + r | -> Exécuter à la ligne actuelle (tous les points d'arrêt au milieu seront ignorés et exécuteront sur la ligne où se trouve le curseur actuel); |
| 7.3 | Toutes les instances | ctrl + shift + n | -> Afficher tous les objets de la classe sélectionnée, cette fonction est excellente; |
| 7.3 | Compte d'instance | aucun | -> Afficher le nombre de tous les objets dans la classe sélectionnée; |
| 7.4 | Montre | aucun | -> Ajouter la variable actuelle et l'expression à la fenêtre Expressions; |
3) Vue de variables (vue variable)
1. Pour la vue de nom de variable, affichez toutes les variables d'instance et les variables locales qui peuvent être accessibles dans la ligne de code actuelle.
2. Afficher toutes les valeurs variables
3. La valeur variable peut être modifiée via cette fenêtre
Vue de variables Affiche des informations variables liées à la trame de pile sélectionnée dans la vue de débogage. Lors du débogage des programmes Java, les variables peuvent choisir d'afficher des informations plus détaillées dans le volet Détails. De plus, les objets Java peuvent également afficher les valeurs des propriétés qu'ils contiennent. Sélectionnez la variable dans cette fenêtre et cliquez avec le bouton droit pour effectuer de nombreuses opérations, les principales opérations sont les suivantes:
Toutes les instances: ouvrez une boîte de dialogue pour afficher toutes les instances de la classe Java. L'utilisation de cette fonction nécessite la machine virtuelle Java pour prendre en charge la récupération des instances.
Toutes les références :: Ouvrez une boîte de dialogue pour afficher tous les objets Java qui font référence à la variable.
Changer la valeur :: Modifier la valeur de la variable. Cette fonction peut être utilisée en conjonction avec Drop to Frame pour le débogage du programme. Utilisez ces deux fonctions au lieu de redéboter
Copier les variables: Copiez la valeur d'une variable, en particulier lorsque la valeur de la variable est très longue (comme les données JSON), cette fonction est utile.
Trouver: Parfois, lorsqu'il y a beaucoup de variables dans une classe, vous pouvez rechercher.
4) Vue de points d'arrêt (vue sur les points d'arrêt)
1. Afficher tous les points d'arrêt
2. Invalidez le port sélectionné dans la fenêtre actuelle 1 et cliquez sur activer à nouveau.
3. Exception du point d'arrêt
La vue de points d'arrêt répertorie tous les points d'arrêt que vous définissez dans l'intervalle de travail actuel. Double-cliquez sur le point d'arrêt pour saisir l'emplacement du point d'arrêt du programme. Vous pouvez également activer ou désactiver les points d'arrêt, en supprimer, en ajouter de nouveaux et les regrouper en fonction des groupes de travail ou des comptes de pointe. Il existe deux techniques qui sont très utiles lors de l'utilisation de points d'arrêt:
Counter Count: il spécifie le nombre de fois que le segment de code est exécuté à un point d'arrêt. Le plus typique est une boucle. Si une boucle doit être exécutée 10 fois et que le thread est suspendu, la valeur du nombre de coups est de 10 et la boucle actuelle s'accroche lors de son exécution 9e.
Conditionnel: Comme son nom l'indique, c'est un jugement conditionnel. Par exemple, lorsque nous avons besoin de faire bouger la variable i == 10, le thread suspend, alors la condition est définie sur i == 10 et sélectionnez Suspender lorsque "true".
Si les deux coups de pointe et conditionnels sont sélectionnés ci-dessus, il ne sera pas valide si les paramètres d'expression et de valeur sont déraisonnables. Si vous sélectionnez Suspender lorsque la valeur change, le conditionnel peut accrocher lorsque la valeur de la variable change.
5) Vue d'expressions (vue d'expression)
1. Expressions
2. Cliquez ici pour ajouter une nouvelle expression
Pour trouver la valeur d'une expression dans l'éditeur de la perspective de débogage, sélectionnez la ligne entière avec l'ensemble des points d'arrêt et sélectionnez l'option Inspecter dans le menu contextuel. L'expression est évaluée dans le contexte de la trame de pile actuelle, et le résultat est affiché dans la vue d'expressions de la fenêtre d'affichage. Par exemple, si je souhaite calculer la valeur de la variable A + B, alors je peux ajouter une expression à la vue d'expression: A + B
6) Afficher la vue
Vous pouvez utiliser cette vue pour entrer ou calculer un nouveau code. Ce code est exécuté dans le contexte de l'emplacement de débogage actuel, ce qui signifie que vous pouvez utiliser toutes les variables et même les assistants de contenu. Pour exécuter votre code, marquez-le simplement et utilisez le menu de clic droit ou CTRL + U (EXECUTE) ou CTRL + SHIFT + I (CHECK)
7) Code Affichage de la fenêtre auxiliaire
1. Vue de code:
Vue de code, utilisé pour afficher le code spécifique. La partie verte fait référence au code qui est actuellement exécuté
| marque | Fonction | clé de raccourci | décrire |
|---|---|---|---|
| 11.1 ~ 11,5 | Hiérarchie de type rapide | ctrl + t | Vérifiez le niveau d'héritage de la classe actuelle et de l'interface. Lors de la saisie par défaut, la sous-classe de l'héritage / implémentation de la classe / méthode actuelle est affichée et la sous-interface 11.1 s'affiche; Ctrl + T Encore une fois, la superclasse / interface 11.2 L'héritage / implémentation de la classe et de l'interface actuels sera affichée. Pendant le débogage, cette fonction est souvent utilisée pour afficher la classe d'implémentation 11.4 à l'appel de méthode de l'interface ou de la classe abstraite, et accéder directement à la méthode d'implémentation correspondante 11.5. |
| contour rapide | ctrl + o | Découvrez le plan de la classe actuelle, y compris les méthodes, les attributs, etc.; Il est de peu utile; | |
| Déclarations ouvertes | F3 | Afficher les définitions des variables, des propriétés et des méthodes |
2. Fenêtre de hiérarchie d'appel:
| marque | Fonction | clé de raccourci | décrire |
|---|---|---|---|
| 12.1 ~ 12.2 | hiérarchie d'appels ouverts | ctrl + alt + h | Vérifiez la méthode appelée niveau, vous pouvez voir où la méthode actuelle est appelée 12.1, ou la méthode actuelle appelle d'autres classes de méthodes 12.2 |
3. Fenêtre de hiérarchie de type:
| marque | Fonction | clé de raccourci | décrire |
|---|---|---|---|
| 13.1 ~ 13.4 | Hiérarchie de type ouvert | F4 | Vérifiez le niveau d'héritage, vous pouvez afficher le niveau d'héritage de la classe, y compris la classe parentale de la classe enfant 13.1, ou le niveau d'héritage de l'interface 13.2 implémenté par la classe. Le contour des classes 13.3 et 13.4 sera affiché à droite en fonction de la classe / interface sélectionnée; 13.3 peut choisir d'afficher les propriétés, les méthodes, etc. de l'interface parent / parent. |
4. Fenêtre de recherche:
| marque | Fonction | clé de raccourci | décrire |
|---|---|---|---|
| 14.1 | Déclarations | ctrl + g | La même signature de la méthode est définie dans l'espace de travail et dans le package de jar tiers 14.1 |
| 14.2 | Références | ctrl + shif + g | Les variables, propriétés et méthodes actuellement sélectionnées sont référencées dans l'espace de travail et dans le package de pot tiers 14.2 |
| 14.3 | ctrl + shift + u | Affichez où les variables, les propriétés et les méthodes apparaissent dans la classe actuelle14.3 | |
| 14.4 | Outils | Afficher la classe 14.8 qui implémente l'interface actuelle | |
| 14.4 ~ 14.7 | Méthode d'affichage | Vous pouvez choisir différentes méthodes d'affichage et voir l'image pour plus de détails |
2. Débogue
1. Set Breakpoint
Dans le fichier de code source, sur la ligne marquée devant la ligne de code que vous souhaitez définir le point d'arrêt, double-cliquez sur le bouton gauche de la souris pour définir le point d'arrêt et double-cliquez à nouveau dans la même position pour annuler le point d'arrêt. Parfois, nous avons toujours ce besoin, c'est-à-dire que je ne veux pas exécuter le code ligne par ligne. Par exemple, une boucle pour une boucle plus de 1 000 fois. Je veux juste laisser le fil pendu pour déboguer la 500e fois. Pour le moment, nous pouvons utiliser des points d'arrêt conditionnels. Définir les points d'arrêt des conditions: nous pouvons définir des conditions de déclenchement pour ce point d'arrêt. Une fois qu'une certaine condition est remplie, nous pouvons commencer à déboguer. Vous pouvez cliquer avec le bouton droit sur le point d'arrêt et sélectionner les propriétés de point d'arrêt pour saisir la page Paramètres de point d'arrêt. Lorsque nous parlions de la vision du point d'arrêt, nous avons appris l'utilisation du nombre de coups et conditionnels. Ici, nous pouvons définir les conditions et le nombre d'exécutions.
1.1) Type de point d'arrêt et fenêtre de point d'arrêt
Il existe cinq types de points d'arrêt qui peuvent être définis lors du débogage:
1. Points d'arrêt de ligne: les points d'arrêt conditionnels, comme son nom l'indique, sont des points d'arrêt avec certaines conditions. Ce n'est que lorsque les conditions définies par l'utilisateur sont remplies que le code s'arrête lorsqu'il s'exécutera vers le point d'arrêt.
2. Méthode Points d'arrêt: la chose particulière à propos des points d'arrêt de la méthode est qu'ils peuvent être touchés dans le code source de JDK. Étant donné que JDK supprime les informations de débogage pendant la compilation, les points d'arrêt ordinaires ne peuvent pas être touchés à l'intérieur, mais les points d'arrêt de la méthode sont possibles. Vous pouvez afficher la pile d'appels de la méthode via cette méthode.
3. Observer les points d'arrêt (montre le changement d'accès variable des points de rupture)
4.Points de rupture d'exception
5. Points de rupture de charge de classe
Les paramètres de chaque type de point d'arrêt sont légèrement différents. Vous pouvez cliquer avec le bouton droit sur le point d'arrêt -> Propriétés du point d'arrêt pour le définir, mais généralement il y a une interface de réglage rapide dans la fenêtre de point d'arrêt. Il y a plus de filtre dans les propriétés du point d'arrêt, qui est en fait assez inutile et pas très utile.
Clés de raccourci liées au point d'arrêt:
| clé de raccourci | illustrer |
|---|---|
| ctrl + shift + b | Grand point d'arrêt / annulation du curseur |
| ctrl + alt + b | Ignorez tous les points d'arrêt |
| Alt + Shift + Q, B | Activer la fenêtre de point d'arrêt |
1. Point d'arrêt de ligne: points de rupture 1.1 et 1.4 sur une certaine ligne dans la méthode. Les points d'arrêt de ligne peuvent définir l'état de la suspension du thread / VM 1.3 et le nombre d'accès 1.2.
La condition en 1.3 est que lorsque le printemps enregistre, la définition du bean (registreAndefinition), s'il s'agit d'org.springframework.demo.mybean, le fil sera suspendu et vous pouvez commencer le débogage étape par étape.
Pour l'utilisation du nombre de coups 1.2, il est généralement dans la boucle. S'il y a un problème avec le Nth Object Processing, définissez Hit Count = N. Pendant la refonte, il peut être pratique d'arrêter le débogage lorsque le nombre de boucles qui doivent être débogués.
2. Méthode Points d'arrêt: points d'arrêt 2.1 et 2.2 sur la méthode. L'avantage des points d'arrêt de la méthode est qu'ils peuvent s'arrêter et déboguer lors de la saisie ou de la sortie de la méthode. Ils sont similaires aux points d'arrêt des lignes, et seuls les points d'arrêt des lignes et les points d'arrêt de la méthode ont les fonctions de réglage des conditions et des temps d'accès.
Cependant, les points d'arrêt de la méthode ont un autre avantage. Si le code est compilé, le point d'arrêt de ligne spécifié ne fonctionne pas, vous ne pouvez donc appuyer que des points d'arrêt de la méthode.
Si vous êtes intéressé, vous pouvez supprimer le crochet avant d'ajouter le numéro de ligne… via A1 et le déboguer et jeter un œil.
3. Observer les points d'arrêt: les points d'arrêt 3.1 et 3.3 Hit sur les variables membre. Seules les variables des membres d'objet ont un effet, les variables des membres statiques ne fonctionnent pas.
Vous pouvez définir le thread / VM 3.2 à suspendre lorsque la variable est accessible ou définie, c'est-à-dire que toutes les méthodes d'accès ou de définition de variables membre similaires à 3.4 seront surveillées.
4. Point d'arrêt de l'exception: les points d'arrêt des exceptions peuvent être ajoutés via 4.6, ou cliquez sur la sortie des informations de classe d'exception dans les informations du journal.
Exception Point d'arrêt 4.1. Lorsqu'une exception se produit dans le système, le thread / machine virtuelle est suspendu à la position de lancer de l'exception capturée ou à l'exception du lieu de lancer 4.2 et 4.4 que le programme ne capte pas, et il peut également spécifier si les sous-classes qui incluent des exceptions sont également détectées 4.3 et 4.5.
En plus de l'ensemble de suspension anormale ci-dessus, vous pouvez définir l'exécution de suspension à partir de Java-> Debug, principalement deux:
1. Si la suspension de l'exécution sur des exceptions non apprises se produit. Pendant le débogage, il y a toujours une suspension d'exception qui affecte le débogage, mais aucun point d'arrêt d'exception n'est défini, vous pouvez vérifier cette option;
2. Qu'il soit suspendu lors des erreurs de compilation, cette situation se produit généralement lors du débogage et de la modification du code;
Une autre chose à mentionner est que l'application avec la méthode principale est démarrée. Vous pouvez vérifier l'arrêt dans le principal A3 dans la configuration de débogage. Lorsque le programme entre, le fil sera suspendu et attendra le débogage.
5. Classe Chargement Breakpoint: Breakpoint 5.1 a été frappé sur le nom de la classe. Les points d'arrêt du chargement des classes ne peuvent pas être définis sur l'interface, mais les classes abstraites sont OK. Cependant, lors du débogage, les points d'arrêt n'entreront pas évidemment le Classloader. L'entrée étape par étape sera connue pour saisir la méthode de construction de la sous-classe. Après avoir suspendu le thread, les classes non abstraites entrent le Classloader (s'il n'y a pas de filtrage du filtre) 5.3. Que le point d'arrêt de chargement de la classe soit frappé sur une classe abstraite ou non abstracte, le thread / VM5.2 sera suspendu lorsque la classe sera chargée pour la première fois ou que la première sous-classe est chargée pour la première fois.
2. Débogage du programme
1. Débogage des programmes de langue java locale
Parmi tous les débogage, déboguer un programme Java, il y a le plus facile, y compris principalement les points de rupture, le démarrage de débogage, le passage et la fin du débogage.
1) Définir les points d'arrêt:
2) Démarrer le débogage: Eclipse fournit quatre façons de commencer le débogage du programme (lancement), à savoir via le menu (exécuter> debug), l'icône ("Bugd Green Bed Bog"), droite-> Debug As and Shortcut Key (F11). À cet égard, il est similaire à d'autres commandes (telles que Run).
Une invite apparaît. Vous devez passer à l'espace de travail de débogage, vérifier "N'oubliez pas ma décision", n'oubliez pas de sélectionner, et aucune invite ne sera invitée la prochaine fois, puis cliquez sur [Oui].
3) Exécution en une seule étape: utilisez principalement plusieurs vues mentionnées ci-dessus pour le débogage, parmi lesquelles plusieurs boutons de la vue de débogage ont des touches de raccourci:
Step Rettuen (F7)
Passez-vous (F6)
Entrez dans (F5)
Débogage de fin: terminer le débogage du programme local via le commandement terminant.
2. Cas
Scénario 1: Xiao Ming a écrit un exécuteur de la tâche, qui a été exécuté en continu. Après l'avoir exécuté en ligne pendant une période de temps, il a constaté qu'il y avait une probabilité d'échecs. Après avoir fonctionné pendant un certain temps, l'exécuteur de la tâche est sorti anormalement. Parce que c'était un pointeur nul, Xiao Ming voulait déboguer localement et ne savait pas où se trouvait le point d'arrêt. Ce problème est un événement probabiliste et ne peut pas nécessairement apparaître. Donc, après que Xiao Ming a débogué plusieurs fois, il était étourdi et ne pouvait même pas voir le code clairement. Xiao Ming voulait avoir un point d'arrêt et s'arrêter et le laisser trouver le problème chaque fois qu'une exception de pointeur nul se produit. Ce serait génial.
Point d'arrêt de l'exception
Point d'arrêt de l'exception: dans le processus de localisation d'un problème, vous rencontrez souvent des points d'arrêt qui ne peuvent pas être touchés à la position appropriée, ce qui est très différent du point de déclenchement du problème. Donc, pour le moment, vous pourriez aussi bien essayer un point d'arrêt de l'exception. Comme son nom l'indique, un point d'arrêt de l'exception fait référence à un point d'arrêt qui est automatiquement suspendu après avoir lancé une certaine exception.
Cliquez sur la partie rouge pour ajouter un point de rupture anormal
Entrez le type d'exception que vous souhaitez localiser, comme NullPointerException. De cette façon, une fois que toute exception NullPointerException est lancée dans le système, le thread actuel sera suspendu, vous donnant une chance de localiser le problème.
Scène 2: Xiao Ming a écrit une énorme boucle. Lors du réglage du code, Xiao Ming a constaté que chaque fois que la boucle atteint la 100 000e fois, il y avait un problème et cela ne répondait pas à ses attentes. Ainsi, Xiao Ming a fait un point d'arrêt dans la boucle, voulant voir ce qui se passait, mais Xiao Ming n'a jamais pensé à quel point il serait difficile d'atteindre 100 000 boucles. À l'heure actuelle, Xiao Ming avait déjà commencé à penser beaucoup, s'il pouvait y avoir un tel point de rupture:
Si le nombre de boucles == 100000, le fil s'arrête
Point d'arrêt conditionnel
Comme indiqué dans l'image à droite, boucle 1000 fois. Si vous souhaitez vous arrêter lorsque vous faites du bouclage à 500 fois, vous pouvez créer un point d'arrêt conditionnel et cliquer avec le bouton droit sur le point d'arrêt pour accrocher les propriétés du point d'arrêt.
Sélectionner la condition d'activation
Dans le blanc, ajoutez votre propre condition. Si la condition retourne vraie, le fil sera suspendu. Si faux, l'exception sera ignorée.
Hit Count suspend officiellement le fil après le passage du point d'arrêt. S'il est réglé sur 500, les 499 premières fois seront exprimées et ne s'arrêteront pas après le point d'arrêt. Lorsque le point d'arrêt est la 500e fois, le point d'arrêt suspendre le thread actuel.
expression
Les expressions peuvent afficher certaines lignes de commande qui ne sont pas disponibles dans le code actuel pour faciliter le positionnement des problèmes.
Scène 3: Xiao Ming a récemment rencontré un problème. Il y a toujours des problèmes lors de l'appel d'un plug-in tiers. Xiao Ming soupçonnait que c'était un bug du plug-in tiers, mais Xiao Ming n'a pas trouvé le code source et n'a pas pu le déboguer. Que devrait faire Xiao Ming?
Débogage ciblant les plug-ins tiers
1. Décompile le code à l'aide de l'outil de décompilation
2. Filtrez le code source décompilé
3. Correction des erreurs de compilation de code source
4. débogage
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.