Maison >Java >javaDidacticiel >Débogage &#printf&# amélioré

Débogage &#printf&# amélioré

WBOY
WBOYoriginal
2024-08-21 06:09:02970parcourir

L'une des techniques de débogage les plus courantes, le débogage avec 'printf' est particulièrement populaire car la plupart des gens l'apprennent intuitivement lors de l'écriture de leurs premiers programmes.

Le débogage 'printf' est très accessible car vous n'avez besoin d'aucun outil spécial pour cela. Lorsque vous faites face à vos premiers bugs, avant même de savoir ce qu'est un débogueur, la chose naturelle à faire est de faire imprimer à votre programme les variables étape par étape, afin de pouvoir suivre l'exécution dans la console.

Bien qu'il s'agisse de l'une des techniques de débogage les plus élémentaires, elle est également largement utilisée par les développeurs expérimentés. Il peut vous aider à enquêter sur tout type de problème, tel que des routines sous-optimales, un état incohérent, des problèmes de multithreading, etc.

Comme je l'ai déjà mentionné, cette technique ne nécessite pas l'utilisation d'outils spéciaux, comme un IDE. Cependant, si vous en utilisez un, cela peut vous rendre encore plus efficace dans l'enregistrement du statut du programme.

Remarque : Cet article présente les fonctionnalités d'IntelliJ IDEA. Des fonctionnalités similaires peuvent ou non être disponibles dans d’autres IDE. Si vous utilisez un autre outil, pensez à consulter sa documentation pour voir si ces fonctionnalités sont également présentes.

modèles en direct

IntelliJ IDEA fournit des modèles en direct pour les modèles de journalisation de débogage les plus courants. Pour utiliser un modèle dynamique pour la journalisation du débogage, entrez l'abréviation correspondante et appuyez sur Tab. IntelliJ IDEA générera l'instruction d'impression et l'insérera dans le curseur.

Regardons quelques exemples.

Enregistrer les paramètres de la méthode

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    // escriba 'soutp' aquí, luego presione Tab

    return null;
}

Code généré :

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    System.out.println("in = " + in + ", mask = " + mask + ", newColor = " + newColor);

    return null;
}

Enregistrer les valeurs

public static double coolMethod(double parameter) {
    double a = Math.random();
    double b = Math.random();

    // escriba 'soutv' aquí, presione Tab y luego seleccione el valor

    return a * b * parameter;
}

Code généré :

public static double coolMethod(double parameter) {
    double a = Math.random();
    double b = Math.random();

    System.out.println("b = " + b);

    return a * b * parameter;
}

Enregistrer les entrées de méthode

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    // escriba 'soutm' aquí

    return null;
}

Code généré :

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    System.out.println("ImageUtils.recolor");

    return null;
}

Journalisation des points d'arrêt

L'un des inconvénients du débogage avec les instructions print est qu'elles introduisent la surcharge de gestion manuelle. Vous ne pouvez pas les allumer et les éteindre rapidement, et vous ne voulez certainement pas commettre l'erreur de les expédier et de les exécuter en production.

Pour cette raison, si vous devez enregistrer quelque chose à des fins de débogage, je vous recommande d'utiliser des points d'arrêt de journalisation car ils sont beaucoup plus faciles à gérer.

Depuración

Pour définir un point d'arrêt de journalisation, maintenez Shift enfoncé, puis cliquez dans la marge. Contrairement à un point d'arrêt classique, il ne suspend pas l'exécution du programme, mais s'imprime sur la console.

Par défaut, c'est un message indiquant que le programme a atteint cette ligne. Vous pouvez également utiliser les options à côté de la case à cocher Évaluer et enregistrer dans les paramètres du point d'arrêt si vous préférez enregistrer la trace actuelle de la pile ou le résultat d'une expression personnalisée.

Depuración

Remarque : Soyez prudent avec les expressions d'enregistrement. L’évaluation de ceux qui provoquent des effets secondaires peut être source de nouveaux bugs ou de comportements inattendus. De plus, lorsqu'ils sont utilisés dans du code chaud, ils pourraient ralentir considérablement votre programme.

Lorsque les points d'arrêt du journal deviennent nombreux, vous pouvez les suivre et les gérer dans la boîte de dialogue Points d'arrêt (Exécuter | Afficher les points d'arrêt) :

Depuración

Vous pouvez même créer des groupes personnalisés pour eux :

Depuración

Cela vous aidera à gérer vos points d'arrêt de manière centralisée. Par exemple, vous pouvez créer un groupe lié à un bug particulier et l'enregistrer pour plus tard. Lorsque le problème disparaît, il vous suffit de l'éteindre. De cette façon, si le problème réapparaît, vous n'aurez pas besoin de tout recréer à partir de zéro. Vous rallumez simplement le groupe.

Journal des événements fréquents

Pour les événements qui se produisent fréquemment pendant l'exécution du programme, enregistrer chaque événement individuellement peut s'avérer superflu. Non seulement cela inonde la console de messages, mais de nombreuses interactions d'E/S peuvent considérablement ralentir la session de débogage.

Depuración

Pour ces événements, il peut être utile d'utiliser la fonction Compte de passes. Vous pouvez y accéder dans la boîte de dialogue Points d'arrêt.

Depuración

Après avoir défini le Nombre de passes sur une valeur spécifique, le point d'arrêt correspondant ne sera déclenché qu'à chaque fois qu'il sera atteint n fois, garantissant que la journalisation ne devienne pas un problème.

Résumé

Que vous insériez des instructions d'impression ou définissiez des points d'arrêt de journalisation pour le débogage, les outils modernes disposent de fonctionnalités pour améliorer votre expérience de débogage. Avec cet article, je voulais m'assurer que vous êtes au courant de ces petites astuces qui rendent l'ensemble du processus plus agréable.

Si vous êtes intéressé par d'autres articles liés au débogage et au profilage, consultez certains de mes autres articles :

  • Debugger.godMode() – Piratez une application JVM avec le débogueur
  • Dépanner le débogueur lent
  • Quel est le problème avec createDirectories() ? - Guide du profilage du processeur
  • Débogage sans points d'arrêt

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn