15 juin 2006

Lire les messages d'erreurs, est-ce bien utile ?

La publication du jour va relater ce qui sera dans quelques temps une anecdote pour moi, mais qui aujourd'hui a été un réel soucis.

Situation la plus défavorable, une application fonctionne depuis plusieurs années sans qu'elle n'ait été modifiée, et donne aujourd'hui sur une configuration unique un message du mécanisme de sécurité du W-Langage. Et bien évidemment, le projet en test sur le poste de développement ne présente aucun défaut.

La problématique : la recherche dans un fichier échouait sur ce poste utilisateur, en indiquant que le fichier n'existait pas dans l'analyse. Effectivement, le fichier n'était pas dans cette analyse, mais il était ouvert avec succès dans le code d'initialisation de la fenêtre (fonction "HDéclareExterne"). Alors mystère, pourquoi sur une configuration, ce fichier n'était pas lisible par la suite, comment l'utilisateur de l'application avait-il pu parvenir à empêcher la lecture de ce fichier ?

Après d’imposantes recherches, le problème a été trouvé, l'utilisateur avait utilisé l'option "mémoriser la valeur" d'un sélecteur. Il avait ainsi provoqué sur son poste l'exécution d'un code avant l'initialisation de la fenêtre, alors que ce code était conçu pour s'exécuter après l'initialisation de la fenêtre. Pour le découvrir, il a fallu reproduire sur le poste de développement (récupération de la clé de registre de l'application du poste utilisateur), et passer le tout au Débogueur.

L'utilisateur dépanné, il a été possible de lever la tête du guidon pour analyser la phase de débogage qui avait été laborieuse (fenêtre de statistiques manipulant de nombreuses données). Et là surprise, l'explication du problème était donnée par le mécanisme de sécurité du W-Langage sur le poste de l'utilisateur. La pile des appels montrait en effet l’ordre d’exécution des codes qui n’était celui prévu au départ. Reformulé différemment, une lecture plus attentive du message aurait permis d’apporter plus rapidement une solution...

Note technique : soyez vigilant lorsque votre application propose la FAA "Mémoriser la valeur". En effet, l'utilisation de cette option provoque l'exécution du code "A chaque modification" lors de l'initialisation du champ (dixit aide W-Langage).

2 commentaires:

Anonyme a dit…

J'ai effectivement constaté des effets de bord lié à la fonction : "mémoriser la valeur" et au déclenchement inattendu du code de l'événement "A chaque modification" !

Je n'ai heureusement pas perdu autant de temps et d'énergie que vous dans cet exemple.

Il faut rester vigileant...

Anonyme a dit…

"L'utilisateur dépanné, il a été possible de lever la tête du guidon pour analyser la phase de débogage qui avait été laborieuse (fenêtre de statistiques manipulant de nombreuses données)."

Je vois que nous sommes finalement d'accord sur la marche à suivre! ;o)
cf mon commentaire dans l'article "Expliquer les erreurs, ne pas contourner à tout prix..."