Étienne Baudoux // Notes

Gérer les bugs avec SoftwareZator 2012

// 10/19/2012

Je constate de plus en plus que beaucoup de personnes utilisent le débogueur de SoftwareZator 2012 à tord et à travers sans réellement savoir l'utiliser. Cet article a pour but de vous initier au débogueur de SoftwareZator.

Comme souvent dans mes articles, on va commencer par de la théorie avant d'attaquer la pratique.

Qu'est-ce qu'un bogue?

Pour faire le plus simple possible : c'est quand un programme ne s'exécute pas comme nous le voulons, comme nous l'avons prévu, ou quand il nous retourne une erreur au moment de son exécution. Lorsque vous ne parvenez pas à générer un projet, cela n'est pas considéré comme un bogue.

Qu'est-ce qu'un débogueur?

Ce n'est pas un outil miracle qui va vous corriger automatiquement vos erreurs. En revanche il peut vous aider à les résoudre. Lancer un projet "en mode débogue" a pour but d'identifier la partie d'une fonction qui ne répond pas à nos attentes, qui ne s'exécute pas comme nous l'avions imaginé. Concrètement, le débogueur a pour unique but d'identifier une erreur d'exécution dans votre projet, de vous afficher où cette erreur a été rencontrée, et de vous afficher des informations "pouvant" vous aider à identifier la cause exacte du problème et comment le résoudre.

Qu'est-ce qu'un point d'arrêt?

Un point d'arrêt permet, en mode débogue, de mettre en pause votre projet en cours d'exécution afin d'avoir accès aux fameuses "informations pouvant vous aider à identifier la cause d'un problème" à un moment choisi dans vos fonctions. Nous verrons dans la pratique son utilisation, qui vous éclaircira sur l'utilité de ces points d'arrêts.

Présentation des outils de débogage de SoftwareZator 2012

SoftwareZator 2012 (édition professionnelle uniquement) est constitué de plusieurs outils constituant le débogueur. Tout d'abord, le menu "Débogage". Ce sont les commandes les plus importantes du débogueur. Vous pourrez lancez vos projet en mode débogue, les mettre en pause, les arrêter ou les reprendre.

Lorsque vous êtes dans un éditeur de fonctions, l'onglet "Éditeur de fonctions" apparaît dans le menu principal de SoftwareZator 2012, en haut de la fenêtre. Depuis ce menu vous pourrez ajouter un point d'arrêt, en activer ou désactiver un, et en supprimer.

Enfin, le panneau "Débogueur" vous permettra d'accéder aux informations sur votre logiciel lorsque le débogueur est en pause. Passons à présent à la pratique.

Exemple de débogage d'un projet

Prenons un simple projet avec une variable "FilePath" et une action "Copier un fichier" utilisant cette variable. Admettons que nous voulions copier un fichier dont le chemin est indiqué dans la variable "FilePath". Admettons également que notre variable ai pour valeur : "MyFile.txt".

Si nous lançons notre programme tel quel, nous aurons le message d'erreur suivant :

Dans cet exemple, le message est relativement clair, mais il arrive que des messages soient incompréhensibles pour certains.

A présent, lançons notre projet en mode débogue, via le menu Projet, Démarrer le débogage. Lorsque l'erreur est intercepté, votre projet sera mi en pause et SoftwareZator 2012 affichera une interface similaire à celle-ci :

Analysons la situation. Je vous recommande à chaque fois que vous êtes dans cette situation de regarder la partie 1, 2 et 3 dans l'ordre. Commençons par regarder la partie numéro 1. Cette partie vous affiche le message d'erreur en détail. Il n'est pas toujours nécessaire de le comprendre intégralement. Les deux parties les plus importantes sont les deux premières lignes. Il y a le type d'erreur et le message. Ici, le message est "Impossible de trouver le fichier MyFile.txt". Si vous ouvrez les paramètres l'action en surbrillance dans l'éditeur de fonction et accédez à la documentation de celle-ci, vous pourrez retrouver dans la partie "Erreurs d'exécution" un descriptif de l'erreur rencontré (selon le type indiqué) et des conseils pour la corriger. Dans le cas présent, on par exemple :

Cette erreur se produit lorsque le fichier spécifié dans le paramètre "Nom complet du fichier à copier" est introuvable sur le disque dur. Pour corriger cette erreur, vérifiez que le chemin vers le fichier à copier soit correcte, et vérifiez que ce fichier existe avec l'action Déterminer si un fichier existe.

Et en effet, dans notre cas l'erreur provient bien du paramètre "Nom complet du fichier à copier". Intéressons-nous à présent à la seconde partie. Le débogueur de SoftwareZator 2012 vous affiche, au moment où notre erreur a été intercepté, les valeurs des variables, paramètres de fonctions, contrôles et leurs propriétés et paramètres du projet. L'avantage est de pouvoir vérifier la valeur d'une variable, propriété ou autre au moment de l'exécution. Dans le cas présent, on peut constater que la valeur de la variable "FilePath" est "MyFile.txt".

Dans la partie numéro 3, on peut constater qu'une action est entouré de jaune, avec une petite flèche grise à côté. C'est l'action sur laquelle l'erreur a été détecté. On sait ainsi quelle action a généré cette erreur. On peut voir dans cette action que la variable "FilePath" est utilisée.

On en conclu donc que le problème vient de la valeur de "FilePath". Il suffit, pour corriger l'erreur, de faire en sorte que la valeur soit égale à un chemin complet, ce qui donne par exemple "C:\MyFolder\MyFile.txt". A présent, le bogue est corrigé; si le fichier existe à l'emplacement indiqué dans mon exemple.

Et les points d'arrêt dans l'histoire?

Les points d'arrêts ne sont pas utiles dans notre exemple. Prenons alors une autre situation.

Admettons que j'ai toujours mon action "Copier un fichier", toujours avec le même bogue. Cette fois-ci, sous les recommandations de la documentation, j'ai ajouté avant une action "Déterminer si un fichier existe". Cette action me retourne une valeur "True" si le fichier existe, et "False" s'il n'existe pas. Admettons également que j'ai ajouté une action "Si ... Alors ... Sinon" pour tester si la valeur est bien "True", et dans cette condition, j'ai mi mon action "Copier un fichier". Par conséquent, si le fichier n'existe pas, la condition n'est pas validé, et la copie de fichier n'est pas effectuée, par conséquent, il n'y a plus de message d'erreur pour nous dire que quelque chose ne va pas. Néanmoins on s'est rendu compte au cours de nos testes que notre fichier n'était pas copié. Il est donc probable que la valeur retournée par l'action "Déterminer si un fichier existe" soit "False", mais vérifions-le !

Comme il n'y a plus de message d'erreur, le débogueur ne s'arrête plus automatiquement. C'est là que les points d'arrêts deviennent utiles. Ce qui nous intéresse est de savoir la valeur retournée par "Déterminer si un fichier existe". Comme les points d'arrêts sont intercepté "avant" l'exécution de l'action sur lequel il est placé, il faut mettre le point d'arrêt sur une action "après" celle qui nous intéresse, pour la laisser s'exécuter comme il se doit (mais dans certains cas c'est l'inverse qui nous intéresse). Sélectionnons donc notre condition, et allons dans le menu "Editeur de fonctions", "Insérer un point d'arrêt". Lançons le projet en mode débogue, et notre projet s'arrête au niveau du point placé. Comme s'il y avait eu une erreur, SoftwareZator 2012 affiche la valeur des variables, paramètres, contrôles et autre et entoure en jaune l'action sur lequel il s'est arrêter. Ainsi vous auriez pu fait les même constations que précédemment avec le message d'erreur, à la différence que là il n'y a pas de message, mais qu'une variable nous indique si le fichier un été trouvé ou pas.

Pour finir

Et bien pour finir, je tiens à préciser que dans des situations aussi petites, il n'était pas forcément intéressant de passer par le débogueur, on aurait put trouver le problème sans lui. Mais, imaginez que vous avez 3 boucles limitées et 8 conditions, là, le débogueur devient indispensable si vous ne voulez pas vous arracher les cheveux durant des heures.

Concluons cet article sur une liste d'avantages/désavantages d'utiliser le débogueur :

Avantages :

Désavantages :

I use cookies to sprinkle some digital magic. 🍪