C'est à ce stade qu'il arrive que l'on doive prendre des calmants, comme expliqué dans la première page du guide, il y a trois possibilités:
- Aucune erreur ne s'affiche.
- Une erreur vient dans un panneau mais
- Vous ne l'avez comme d'habitude même pas regardée.
- Elle ne sert à rien, car elle ne contient aucune info utile.
- Les deux.
- Le plus rare: une fenêtre vient et contient la bonne erreur (très rare).
Le problème c'est qu'il faudrait consacrer un guide entier au debuging (la chasse aux poux) et ici c'est un guide Javascript, de plus, comme d'habitude netscape et msie n'ont pas les mêmes possibilités, alors je vais me contenter de vous donner une méthode qui fonctionne avec tous les langages et tous les navigateur, elle vaut ce qu'elle vaut, mais elle a le mérite d'exister.
Pour voir si une fonction ou une routine s'exécute et fait un travail correct, si une valeur change, ou bien où le programme se plante, il suffit de le truffer de la manière suivante.
- Cas simples:
alert("Variable toto="+toto); alert("Point no 1 ateint"); Etc...
- Cas compliqués:
Ouvrir une nouvelle fenêtre de nom "MaFenetreDebug" (par exemple) avec onLoad="x=window.open('','MaFenetreDebug', 'height=120, width=200, menubar=no, resizable=yes, status=yes, toolbar=no, scrollbars=yes');" (y faut vraiment tout vous dire !), et d'utiliser un x.document.write(); avec toutes les informations pertinentes (ou non, ça c'est votre problème), et d'utiliser par exemple x.document.write("Routine ZZZZ, paramètre:"+coefficient); x.document.write("Je suis passé par là"); x.document.write("Valeur de x dans la boucle:"+x); Etc aussi...
Il peut être très utile d'afficher la variable de comptage dans une boucle, pour s'assurer que la boucle fonctionne bien, si elle s'exécute au moins une fois ou si elle est infinie, ce qui bloquera le programme Javascript sans la moindre erreur (ou un overflow après plusieurs heures/jours/mois/années selon les cas).
Pour trouver un bug, on procède de la même façon que pour écrire un programme, on découpe et on isole la partie suspecte (avec la méthode ci-dessus), et quand il ne reste plus qu'une ligne, voire une instruction, on a trouvé l'erreur (quand à savoir comment la corriger, ça peut-être un autre problème).
Il reste encore beaucoup à dire sur le sujet, envoyez-moi vos astuces ou solutions si elles peuvent servir aux autres, je les rajouterais ici avec plaisir.
|