Page 2 sur 3

Re: Comment intercepter les message d'erreurs...

Publié : mar. 14/mars/2017 18:18
par Ollivier
Les solutions que tu demandes nécessitent un minimum de travail, étape par étape.

Ça se sent que tu loopes ça. Un exemple : voici une solution qui répond à ta question. Cette solution n'est pas la meilleure : elle est générique (universelle, passe-partout, etc...).

Par contre, le jeu de conditions (PixelX, PixelY) peut être migré de l'instruction Point().

Dans ce cas de migration, qui dépend, au cas le cas de la méthode de modification, tu obtiens la plus rapide des gestions d'erreur.

Code : Tout sélectionner

If PixelX > X0
   If PixelY > Y0
      If PixelX < X2
         If PixelY < Y2
            PixelC = Point(PixelX, PixelY)
         EndIf
      EndIf
   EndIf
EndIf
Shadow a écrit :Avec mon code j'ai un IMA, ok bon mais c'est pas encore assez précis.
1) Le compilateur offre des données précises. Il prend même en charge les pliages de macros.
2) Est-ce bien utile?

Ta question suivante sera-t-elle :
"Maintenant que j'ai la ligne de mon erreur,
la ligne de la macro dans laquelle elle est,
le nom de la procédure dans laquelle elle est,
le nom du module dans laquelle elle est,
le nom du fichier dans laquelle elle est,
j'aimerais obtenir la valeur qui endiguera l'erreur!"

(Dans ce cas, cf migration plus haut)

Re: Comment intercepter les message d'erreurs...

Publié : mar. 14/mars/2017 18:25
par Shadow
Bonjour Olivier,

Je suis désolé, je n'aie pas réussi à comprendre se que tu voulais dire :(
Merci quand même.

Re: Comment intercepter les message d'erreurs...

Publié : mar. 14/mars/2017 18:37
par Ollivier
Est-ce bien utile d'ériger un complexe militaro-industriel spécialisé dans l'éradication du bug à pas de chance, alors qu'une simple gestion de limite suffit?

Re: Comment intercepter les message d'erreurs...

Publié : mer. 15/mars/2017 1:01
par JohnJohnsonSHERMAN
Eh oui, le plus sûr rempart contre les erreurs reste la prévoyance du programmeur :mrgreen:

Re: Comment intercepter les message d'erreurs...

Publié : mer. 15/mars/2017 9:24
par Micoute
Le plus sûr moyen de déboguer un logiciel est de le faire utiliser par un utilisateur qui ne sait pas comment il fonctionne.

Re: Comment intercepter les message d'erreurs...

Publié : mer. 15/mars/2017 9:26
par Mindphazer
En un mot, pourquoi faire du curatif (intercepter les erreurs) au lieu de faire du préventif (éviter les erreurs) ??

Re: Comment intercepter les message d'erreurs...

Publié : mer. 15/mars/2017 12:58
par Ollivier
Shadow,

voici ce que tu cherches :
Section Info et tuto - Sujet : Le compilateur en mode Stand-By

Et parce qu'un plat sans sauce, c'est un peu fade, voici une explication moins "échelonnée" et plus explicative que ma traduction et mon exemple.
Développez.com - Le compilateur PUREBASIC

Questions traitées:
  • Comment communiquer avec le compilateur ?
  • Comment vérifier si le compilateur est prêt ?
  • Comment interroger le compilateur ?
  • Comment récupérer la réponse du compilateur ?
  • Comment écrire un préprocesseur ?
  • Bash script pour compiler rapidement vos codes pour Linux et Windows 32\64
  • Comment créer un fichier résident ?


Si tu as la moindre question, n'hésite pas.

Re: Comment intercepter les message d'erreurs...

Publié : mer. 15/mars/2017 15:49
par Shadow
Merci Olivier :)

Re: Comment intercepter les message d'erreurs...

Publié : mer. 15/mars/2017 16:52
par falsam
Ollivier merci pour le lien Développez.com - Le compilateur PUREBASIC

Re: Comment intercepter les message d'erreurs...

Publié : mer. 15/mars/2017 17:52
par Kwai chang caine
Oui !!! Vraiment intéressant le lien merci 8)
Micoute a écrit :Le plus sûr moyen de déboguer un logiciel est de le faire utiliser par un utilisateur qui ne sait pas comment il fonctionne.
je dirais même plus, en mode "même pas peur"
Par quelqu'un complètement etanche à l'informatique.
J'ai subitement une douce pensée pour ma chère epouse :mrgreen:

Re: Comment intercepter les message d'erreurs...

Publié : jeu. 16/mars/2017 6:52
par Micoute
Ca m'est arrivé qu'on me plante le programme parce qu'on avait entré @

Re: Comment intercepter les message d'erreurs...

Publié : jeu. 16/mars/2017 11:50
par Kwai chang caine
Moi ma belle mere a fait tombé une brouette de livres, sur le clavier et les a pas enlevé, trouvant ça pas genant.
J'etais avec Teamviewer avec elle....et elle m'a "bourré le tampon" ..... :?
Ouuuuuui !!!! je sais, normalement ce genre d'accident arrive plutôt habituellement dans l'autre sens :mrgreen:

Du coups obligé de tout rebooter, un truc de dingue... 8O
C'est un peu comme sur la route...certaines personnes devraient s'abstenir :|
Mais bon...elle me fait du bien, car devant elle, j'ai vraiment l'impression d'être dans les pompes de FRED, NETMAESTRO, SROD , etc .... 8)

Re: Comment intercepter les message d'erreurs...

Publié : jeu. 16/mars/2017 16:01
par Ollivier
Shadow a écrit :Merci Olivier :)
L'exemple avec Point(x,y)

Point() est conçu pour ne pas vérifier où il pique sa couleur.

Résultats :
  • 1) Dans le cas normal : il retourne la valeur du pixel
  • 2) En cas de violation de domaine :
    • 2a) En mode déboguage : Avertit et arrête le process
    • 2b) En mode normal : (de manière non prévisible)
      • 2b1) Soit il retourne une valeur chaotique
      • 2b2) Soit il déguelingue l'intégrité mémoire (IMA) avec, comme effet non prévisible :
        • 2b2a) subir un arrêt immédiat du process
        • 2b2b) subir un arrêt ultérieur du process avec une IMA délocalisée de sa cause.
Conclusion : on peut simplement récupérer l'erreur que le compilateur fournit généreusement, ça c'est sûr. Mais ça s'arrête là, ça permet de rajouter des confettis et des petites fleurs au message d'erreur, voire de traduire l'erreur en 50 langues différentes, mais il n'existe pas de système possible qui puisse prendre en charge la qualité de l'erreur : ça ne sert qu'à renseigner le programmeur qui est "l'inventeur" de cette erreur.

Et en admettant que tu disposes d'un système magique, l'item 2b2 t'indique qu'en plus d'être magique dans l'instant, il faut que ton système soit devin pour déterminer à quel moment ton IMA va être fatale. Si l'IMA n'est pas immédiate, c'est une IMA fausse, c'est-à-dire une conséquence de ton erreur initiale. On ne doit plus seulement traiter d'un "point" anarchiste, mais d'une instruction "point" anarchiste plus une instruction-surprise qui a son tour part en vrille.

Mais admettons que ton système magique soit aussi devin. Système qui, à raison de 10 lignes par instruction, au sein d'un jeu de 1000 instructions, te coûte directement 10 000 lignes de code, pour apporter une réponse qui permettra "seulement" de maintenir l'intégrité de ton programme. Si deux erreurs sont à traiter simultanément, parce que l'une a causé l'autre, parce que le débogueur n'est pas activé, et que tu fais la grève de la lucidité grâce à un système magique et devin, c'est 10 000 x 10 000 lignes de code, soit 100 millions de lignes de code qu'il te faut préparer.

Tu tapes une lignes en 10 secondes, ça fait un milliard de secondes pour programmer ton système.

Admettons que tu aies une machine à voyager dans le temps, pour que ton système soit prêt dans les délais, reste le problème du vieillissement pour programmer.

Admettons que tu sois immortel...

Je me permets de t'informer que, comme une majeure partie des instructions à arguments, nous disposons d'instructions qui renseignent des limites de ces arguments : pour l'exemple de Point(x,y), tu disposes de

Code : Tout sélectionner

OutputWidth()
OutputHeight()
(à compléter dans le code précédemment écrit, et qui rend le problématique item 2 impossible)

Re: Comment intercepter les message d'erreurs...

Publié : jeu. 16/mars/2017 17:14
par Shadow
Merci Olivier mais se que j'aurais aimer c'est voir des messages d'avertissements comme dans l'éditeur de PB.
L'id se sers de fichier Catalog pour traduire ses erreurs.

Comment il fais ça ?
Bref ont avance pas là.

Re: Comment intercepter les message d'erreurs...

Publié : jeu. 16/mars/2017 18:49
par Ollivier
Lis la page du site "Développez.com" fournie plus haut.

A chaque chose inconnue que tu lis, poste-en la question ici.