Bonjour les panoramicien.
Pour un grand programme qui va durer, et découpé en morceau, j'ai mis au point un programme de débogage que je considère d'innovant.
Normalement pour ce genre de programme, j'ai rarement de retour, et je me dis qu'il serait bon de savoir si vous êtes intéressé, sachant qu'il faut comprendre le fonctionnement pour bien le mettre en oeuvre. Il est composé de plusieurs parties, car le principe est spécial. Cela commence par ce que j'appelle le «constructeur» qui reprend les lignes du programme, et le reconstruit avec ses propres lignes, il ajoute un autre programme qui est un transmetteur de données à un autre programme.
Donc à partir du programme de départ (celui qu'on teste), la construction se fait, et le programme démarre. En apparence on ne voit rien. Il y a toute fois des ordres à donner, comme on le fait avec TRACE_ON ..., ainsi que le choix des variables qu'on veut tester.
Si il y a une erreur, le message d'erreur apparait, ce qui est normal, avec le type d'erreur, mais on ne tient pas compte de la ligne. A partir de là, il suffit de cliquer sur le second programme, qui s'est lancé en même temps, par derrière, et on a les 40 dernières données envoyées à celui-ci. Cela donne par exemple ceci:
- exemple:
Comme vous le voyez pour ce programme de teste, à la rencontre de l'erreur, le programme s'est fermé, et on voit où est se situe, et la raison de celle-ci.
Cela dit, en rapport avec ce programme, qui ne devrait pas avoir je pense de problème avec les timers, s'il ne sont pas trop rapide, je dis qu'il manque une instruction les concernant. Pour ce type de programmen il est presqu'un impossible de savoir si ils sont actifs où non (surtout s'ils sont plusieurs), car même en analysant chaque ligne pour voir quel timer ne doit pas être redémarré, si on les désactive à chaque appel d'une procédure de débogage. Faisons un schéma:
chaque étoile représente le moment où le timer démarre:
______________*_______________*______________*_______________*
si une procédure a besoin de:
________* comme unité de temps. Si l'appel se fait juste après le démarrage du timer, cela ne devrait pas poser de problème. Mais si l'appel se fait juste avant l'appel du timer, n'en a t'il pas un?
Je dis qu'il faudrait avoir une commande du genre: TIMER_REPRISE, avec des mots anglais, pour qu'on puisse à l'appel d'une procédure, remettre à zéro le démarrage de ceux-ci.
Toujours est-il que le programme modifié utilise très peu de ressource. C'est le constructeur qui fait le maximum pour simplifier les appels. Si vous êtes intéressé, j'en dirais plus ensuite, mais il ne m'intéresse pas de mettre un programme avec tout un baratin pour apprendre à vous en servir, si c'est pour rien en faire.