Remarque
Lorsque l´on lance anyflo par un fichier *.js, en cas
d´erreur il se relance automatiquement, si bien qu´il n´est pas
possible de tirer un diagnostique.
On relance alors anyflo avec le fichier
anyflo_video.js, on lit la fonction à
débuger et l´appeler.
Si l´erreur concerne la compilation les messages émis permettent
de tirer le diagnostique, la commande edit func
donne la liste des fonctions compilées sans erreur, la dernière est
probablement la fautive...
Sinon, appeler la fonction à
débuger,
des messages d´erreurs concernant l´exécution permettent de tirer
le diagnostique.
Erreurs de compilation
Format
Ce sont des erreurs de syntaxe se présentant sous la forme:
1) Un message indiquant le type de l´erreur.
2) L´instruction erronée.
3) Le nom de la fonction dans laquelle s´est produite l´erreur.
edit func imprime les noms de toutes les fonctions
compilées, ainsi la dernière est celle où l´erreur
s´est produite.
Correction
Les erreurs les plus courantes sont:
L´oubli d´un ; (point virgule) à la fin d´une
instruction ou d´une déclaration d´extern.
: au lieu d´un ; produit le message: Etiquette non trouvee.
Une erreur de parenthésage () (parenthèse) [] (crochet) ou {} (accolade).
L´emploi d´un mot n´appartenant pas au langage (par exemple
iff au lieu de if).
Note:
edit func: imprime les noms des fonctions compilées,
l´erreut a probablement eu lieu dans la dernière ou la suivante.
Mode debug
debug compile(v) montre le code correctement compilé (v=1 sous forme symbolique,
v=2 en macro assembleur).
Erreurs de link
Elles se présentent sous la forme:
1) Un message indiquant le type de l´erreur.
2) L´instruction erronée.
3) Le nom de la fonction dans laquelle s´est produite l´erreur.
Correction
Les erreurs les plus courantes sont:
1) L´include d´une fonction qui n´a pas été définie avant.
2) Des références non définies.
Mode debug
debug link(v) montre le code correctement linké (v=1 sous forme symbolique,
v=2 en macro assembleur).
Erreurs d´exécution
Ce sont des erreurs se produisant lors de l´exécution du code, elles se présentent sous la forme:
Un message indiquant le type de l´erreur.
Le nom de la fonction dans laquelle s´est produite l´erreur.
L´instruction erronée.
Possiblement n lignes avant et n lignes après si dim error(n).
Le traitement est interrompu sauf si no error est validé.
Remarques:
si debug exec(1) est validé, le code
compilé est imprimé.
error retourne le nom de la commande concernée
par cette erreur, error(0) réinitialise à no error.
Correction
Les erreurs les plus courantes sont:
1) Une variable non initialisée.
2) L´appel à une fonction non définie ou ne correspondant à aucun fichier sur le disque dont la
première fonction porte ce nom.
3) Une opération interdite, par exemple une division par zéro, ou une opération mèlant des float
et des char.
Mode debug
debug exec(v) montre le code en cause (v=1 sous forme symbolique,
v=2 en macro assembleur).
Liste de certaines erreurs
DEBORDEMENT
Dé:bordement de pile.
ERREUR DE PATENTHES ()
Comme dans:
x=1+2*3);
ERROR DE CROCHET []
Comme dans:
x=tab[1,2]];
ERREUR DE BLOC {}\
Blocs mal imbriqués.
AFFECTATION ILLEGALE
Le symbole à gauche du signe = est une constante comme:
2=x;
PI=3.14;
ERREUR MALLOC
Comme dans:
x=malloc(-1);
x=malloc(0);
x=malloc(100000000000);
VARIABLE NON INITIALISEE
Une variable est utilisée sans avoir été initialisée.
ERREUR DE DIRECTIVE
Par exemple: #defin x 3 au lieu de #define x 3
arc r,a,da,n
Définition incomplète d´un arc de cercle (il faut 4 paramètres).
attach(num)com1(p1)....obj(id)
En général il faut num= 0 (pour un nouvel attach)).
COMPILATION OFF
Tentative d´exécuter un code mal compilé
DEBORDEMENT, augmenter Dim_ev (dans enva.h)
Dé:bordement de la pile des évaluations.
DEBORDEMENT, augmenter Dim_mac (dans enva.h)
Dé:bordement de la pile de compilation.
DIVISION PAR ZERO
Comme dans: x / y when y = 0.
ERREUR LECTURE
Lecture d´un fichier non existant.
ERREUR ECRITURE
Ecriture d´un fichier protégé.
ERREUR LINK
Erreur de link, en général une fonction non définie.
ERREUR OPERATEUR
Opérateur non reconnu, par exemple: x = 1 ++ 2;
FONCTION(liste)
En général une fonction définie dans une fonction.
ETIQUETTE NON TROUVEE
goto label; alors que label: n´existe pas.
FONCTION NON DEFINIE
Appel à une fonction non présente en mémoire et ne correspondant
pas à la première fonction d´un fichier portant ce nom.
for(ini;cond;inc) { ... }
Erreur de syntaxe dans une boucle, exemple for(i=1)$i;
if(cond) {bloc} ou if(cond) {bloc1} else {bloc2}
Erreur de syntaxe dans une condition.
obj(id)
Tentative de définir un objet sans préciser son
identificateur id.
Exemple: cube; imprime: cube (id)
obj(id) N´EST PAS UNE GRILLE
Commande impliquant l´objet id requérant qu´il soit une grille:
ball, geod, grid,
rev, pipe
OBJET(id) NON TROUVE
L´objet id n´existe pas.