Points d’arrêts conditionnel et mode debug

Points d'arrêts conditionnel et mode debug
Il m’arrive tous les jours de devoir passer en mode debug au boulot. La méthode traditionnelle consiste à mettre des points d’arrêts au endroits qui semble important dans le code. Seulement voilà, que se passe t-il lorsque un grand nombre de points d’arrêts ont déjà été positionnés dans le code ? Le debug prend de plus en plus de temps et cela est encore pire lorsque que le cas posant problème se trouvent au milieu d’une boucle et qu’il faut donc vérifier minutieusement à chaque tour que celui ci ne se présente pas…

Pour palier à ça, pas grand chose à part nous dirons un tips : les points d’arrêts conditionnels. Rien de fabuleux mais franchement pratique !

Par exemple Imaginons qu’on a une boucle sur une liste contenant des objets de différents types et que des traitements différents sont effectués en fonction du type :

for (int i = 0 ; i < maListe.size() ; i++ ) {
     Object o = maListe.get(i);
     if (o instanceof MaClasse1)
          traitement1(o);
     else if (o instance of MaClasse2)
          traitement2(o)
     ...
}

Le debug peut alors devenir fastidieux si la liste contient beaucoup d’éléments…

Avec Eclipse on peut poser un point d’arrêt et lui attribuer une condition d’arrêt. Pour cela il faut tout d’abord ajouter un point d’arrêt à l’endroit ou vous voulez éventuellement vous arrêter.
Puis Clic droit sur le point d’arrêt dans l’onglet Breakpoints de la perspective Debug d’eclipse. (ou directement sur le breakpoint dans le code) et choisir « Breakpoint properties »

Menu des breakpoints Eclispe

La fenêtre des propriétes du breakpoint s’ouvre et vous pouvez alors cochez la case « Enable Condition » puis entrer une condition d’arrêt dans le cadre en dessous. Pour notre exemple une possibilité est de faire :Debug-Breakpoints properties

De cette façon le debuggeur ne s’arretera sur le point d’arrêt que si l’élément o est une instance de la classe « MaClasse1 .

On à également la possibilité de ne s’arrêter qu’après un certain nombre de passage sur le point d’arrêt grâce à l’option « Hit Count », ou de s’arrêter non pas quand la condition renseignée vaut « True » mais quand celle – ci change de valeur.

Voila, ces petites configurations permettent d’écourter au maximum le temps pour trouver d’où vient un comportement anormal.

Je me demande aussi si il ne serait pas bénéfique de placer ce genre de point d’arrêt conditionnel préventivement lorsque théoriquement la valeur d’un objet/element/attribut est sûre.

Laisser un commentaire

Catégories
Nuage de Tags