Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » GFA-Basic TI68K » Documentations » Gestionnaire d'exceptions (9 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
geogeo Ecrit le: Samedi 23 avril 2005 à 21:15 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


GFA-Basic est en effet capable de récupérer des erreurs sérieuses pouvant être produites par une mauvaise utilisation des fonctions Peek et Poke ou encore à un bug interne à GFA-Basic.

Il est possible d'activer sans risque le gestionnaire d'exceptions, s'occupant d'intercepter les erreurs sérieuses pouvant entrainer un plantage de la machine. Tapez le code suivant dans votre programme:
POKE 1,1 'Ceci provoque l'exception Protect Memory Violation

Cette ligne écrit la valeur 1 sur un octet à l'adresse 0x000001 or les adresses hautes sur TI68K sont protégées et une écriture non autorisée provoque une exception.

Voici à quoi ressemble le gestionnaire d'exceptions, il est constitué de 4 pages dont 3 permettent de nous renseigner sur l'état de la machine lors du plantage.

A la page n°1, vous trouverez un texte indiquant que le gestionnaire d'exception a interceptée une erreur et vous invite à transmettre un rapport de bug si cette erreur n'est pas une erreur de manipulation de votre part (souvent produite par Peek et Poke).

/gfabasic/images/faq/except1.gif


A la page n°2, on trouve des informations concernant l'état du processeur ainsi que l'exception générée. Ces informations sont utiles pour permettre au(x) développeur(s) de GFA-Basic de trouver le bug en question qui a provoquer ce plantage et de le corriger.

/gfabasic/images/faq/except2.gif


Aux pages suivantes, on trouve des informations concernant l'interpréteur.
La page n°3 nous renseigne sur le modèle de la calculatrice utilisée et donne des informations relatives à des pointeurs de gestion de données internes à l'interpréteur. Ces pointeurs sont essentiels pour déterminer quelle instruction à provoquer une erreur et surtout dans quelle condition l'erreur a été produites (débordement de piles, instruction incorrecte...).

/gfabasic/images/faq/except3.gif


La page n°4, contient d'autres informations relatives à la structure interne de l'interpréteur ainsi que l'espace mémoire en RAM libre (utile dans le cas ou il y a eu écrasement de données parce que pas assez de mémoire de libre...).

/gfabasic/images/faq/except4.gif


Si vous rencontrez une erreur qui provoque l'ouverture de ce gestionnaire d'exception vous devez vous assurer dans un premier temps que cette erreur ne provient pas de votre source (voir Peek et Poke) pour cela explorez votre code source et essayez d'isoler le problème. Si ce n'est pas le cas et que vous pensez que cette erreur est un bug de GFA-Basic, envoyez un rapport complet avec un descriptif des manipulations que vous effectuez, le modèle de votre calculatrice... et surtout votre source à l'adresse suivante: gfabasic@tigen.org

Il est possible de quitter le gestionnaire d'exceptions en interrompant GFA-Basic en appuyant tout simplement sur la touche [ESC] ou [ENTER], si vous constatez qu'il est impossiblde de quitter le gestionnaire alors il ne vous reste plus qu'à faire un Reset de votre machine en appuyant sur F5.

Le gestionnaire d'exceptions permet dans la majorité des cas de 'déplanter' la machine et de permettre d'utiliser sa calculatrice de façon stable. Néanmoins il est possible qu'après l'interception d'une exception que la machine ne soit plus stable.

Le déclenchement du gestionnaire d'exceptions est la dernière couche de détection d'erreurs de GFA-Basic. Il correspond à une détection bas niveau d'erreurs produites par des instructions bas niveau (de l'assembleur ou encore d'instructions modifiant le contenu de la mémoire).
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°1   Marquer comme non lu.
Sasume Ecrit le: Dimanche 24 avril 2005 à 10:31 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Pratique !
Comment est-ce que ça fonctionne ? C'est un anti-crash, ou bien tu détectes les erreurs avant qu'elles ne se produisent ?
    
./Post n°2   Marquer comme non lu.
geogeo Ecrit le: Dimanche 24 avril 2005 à 12:29 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


C'est un anti-crash.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°3   Marquer comme non lu.
Sasume Ecrit le: Dimanche 24 avril 2005 à 20:27 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Ah, donc ce n'est pas hyper stable :(
En même temps, si tu fais les vérifications avant d'exécuter les instructions, tu te ralentis beaucoup le temps d'exécution...
    
./Post n°4   Marquer comme non lu.
geogeo Ecrit le: Dimanche 24 avril 2005 à 20:47 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Cet anti-crash est une dernière couche pour avoir un maximum de stabilité. Maintenant il ne faut pas espérer avoir un truc méga top empechant à tous les coups de planter la calculatrice. Déjà en GFA-Basic il est très difficile de planter la machine pour un débutant. La seule façon d'ouvrir ce gestionnaire d'exceptions est de soit trouver un bug de GFA-Basic soit provoquer une erreur de façon voulue (Peek et Poke).
Maintenant à mes yeux je ne vois pas comment faire mieux. Vouloir à tout pris un truc stable c'est devenir paranoiaque et arriver à un truc hyper lent pour au final avoir un langage pas 100% stable.

Arriver à planter le TI-Basic c'est très rare, c'est pareil avec GFA-Basic sauf que ce petit gestionnaire donne une plus grande stabilité. D'après des tests extrêmes j'ai estimé que ce petit gestionnaire était capable dans 90% des cas de redonner la main à l'utilisateur pour qu'il puisse sauvegarder rapidement son travail et dans 60% des cas de redonner la main avec une machine 100% stable sans perte de mémoire.

En GFA-Basic la gestion de la mémoire est assez évoluée, c'est-à-dire que même si on interrompt un programme qui a alloué énormément de mémoire avec la touche [ON] ou encore avec ce gestionnaire, on est sûr de retrouver la mémoire telle quelle était avant le lancement du programme.

En TI-Basic ou encore avec d'autres langages lorsqu'un plantage arrive et il frustrant de voir une bande noire assez obscure obligeant l'utilisateur à forcer un reset de la machine et à perdre son travail. Ici le but est dans un premier temps permettre de quitter GFA-Basic et redonner la main à l'utilisateur pour qu'il sauvegarde son travail et dans un deuxième temps rendre la machine la plus stable possible. Et en plus permettre au développeur de corriger assez facilement un bug.
-Edité le Dimanche 24 avril 2005 à 20:55 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°5   Marquer comme non lu.
Onur Ecrit le: Samedi 7 mai 2005 à 05:37 Déconnecté(e)    Voir le profil de Onur Envoyer un email à Onur Visiter le site WEB de Onur Envoyer un message privé à Onur  


Tu fais deux modes.
Un mode "debug" avec plein de tests. Et un mode "release" qui ne fait aucune vérif.

Ca serait pratique aussi si lors d'une levée d'exception, en plus d'afficher toutes ces infos, que ca crée un fichier que le programmeur peut t'envoyer. Ca lui évitera à tout recopier à la main et donc l'encouragera à faire son bug report.
Je ne veux pas faire quelque chose de bien, je cherche l'excellence:ETP Studio...


et autres projets à finir avant 2010
    
./Post n°6   Marquer comme non lu.
geogeo Ecrit le: Samedi 7 mai 2005 à 11:18 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Euh moi pas comprendre car:
- Tu m'expliques comment avec des tests horribles savoir si une exception va se produire, exemple avec les fonctions Peek et Poke (le gars a t-il le droit d'écrire à telle adresse, y a t-il des données du système....).
- Ensuite le gestionnaire d'execptions pour se passer des infos suffit juste d'appuyer sur ENTER ou ESC donc je ne pense pas que ça soit un effort sur humain. :D

Le pire dans tout ça c'est que si je fais votre truc de détection des erreurs, j'en ai pour toute ma vie à coder GFA-Basic, il va prendre une place folle, va ramer comme pas possible car faudra émuler chaque instruction pour voir si elle provoque une erreur ou non et après vous allez me dire poubelle car c'est trop gros et trop lent. %)
Avant qu'un programmeur provoque une exception en codant normalement, il s'écoulera du temps.

Pour le report, seul ça m'interesse pas, je préfère avoir la source et planter la machine pour voir ce qui se passe. :)
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°7   Marquer comme non lu.
FpgForce Ecrit le: Samedi 7 mai 2005 à 15:31 Déconnecté(e)    Voir le profil de FpgForce Envoyer un email à FpgForce Envoyer un message privé à FpgForce  

Euh dans ce cas autant faire un page d'erreur toute simple pour lu'tilisateur qui n'a pas besoin d'avoir toutes les info de debuguage et toi tu garde une version avec toute les pages.
    
./Post n°8   Marquer comme non lu.
geogeo Ecrit le: Samedi 7 mai 2005 à 15:38 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Moi pas comprendre encore.
Y a une simple page au début, suffit juste que l'utilisateur n'appuie pas sur F2, F3 ou F4. %)
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°9   Marquer comme non lu.
FpgForce Ecrit le: Samedi 7 mai 2005 à 18:11 Déconnecté(e)    Voir le profil de FpgForce Envoyer un email à FpgForce Envoyer un message privé à FpgForce  

Ben je sais pas, c'est toi qui optimise ton code à mort :)
    
  :: Index » GFA-Basic TI68K » Documentations » Gestionnaire d'exceptions (9 réponse(s))
Pages : 1/1     « [1] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 38.11ms avec 18 requetes