Comment intercepter les message d'erreurs...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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)
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message par Shadow »

Bonjour Olivier,

Je suis désolé, je n'aie pas réussi à comprendre se que tu voulais dire :(
Merci quand même.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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?
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

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

Message par JohnJohnsonSHERMAN »

Eh oui, le plus sûr rempart contre les erreurs reste la prévoyance du programmeur :mrgreen:
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

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

Message par Mindphazer »

En un mot, pourquoi faire du curatif (intercepter les erreurs) au lieu de faire du préventif (éviter les erreurs) ??
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message par Shadow »

Merci Olivier :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message par falsam »

Ollivier merci pour le lien Développez.com - Le compilateur PUREBASIC
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message 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:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message par Micoute »

Ca m'est arrivé qu'on me plante le programme parce qu'on avait entré @
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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)
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message 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à.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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.
Répondre