Comment intercepter les message d'erreurs...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Comment intercepter les message d'erreurs...

Message par Shadow »

Bon soir,

Comment faire pour intercepter les messages d’erreur dans l'id de PB, vous savez en bas de l'éditeur...
Y à ton accès avec du code PB ?

Par exemple si j’essaie de faire:

Code : Tout sélectionner

Debug Point(10, 45)
Un message apparais et la ligne en question deviens rouge
j'aimerais intercepter tous ça, c'est possible ?

Savoir le message d’erreur, la ligne aussi.
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
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

Re: Comment intercepter les message d'érreurs...

Message par Mindphazer »

OnErrorCall ou OnErrorGoto
Et ErrorLine()

RTFM
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
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'érreurs...

Message par falsam »

A mon avis c'est en ligne de commande qu'il souhaite une compilation.
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%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment intercepter les message d'érreurs...

Message par Shadow »

Mindphazer merci mais non c'est pas ça :)

Dans PB ya 4 choses je crois bien:

Les erreur de code dans PB: Editor.catalog
Les erreur de code dans Libraries.catalog
Les erreur de code dans Debugger.catalog
Les erreur de code dans Compiler.catalog

Je sais pas si je suis clair en faite :?
Je voudrait intercepter TOUTES ERREURS de code.

J'ai l'impression que je suis limité avec le debugeur (pbcompiler), toutes les erreurs ne sont pas reportées.
Si vous faite par exemple dans l'id de PB:

Code : Tout sélectionner

Debug Point(56, 78)
Une erreur est soulevé !, je ne pense pas que ça vienne de (pbcompiler) car lui va dire que c'est ok.
Peut être Libraries...

pbcompiler n'est pas le compilateur en mode commandes n'est ce pas ?
Je ne sais pas utiliser le compilateur en mode de commande si c'est ça.
Peut être que lui a plus d'option ?
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.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment intercepter les message d'érreurs...

Message par Marc56 »

Shadow a écrit :Je ne sais pas utiliser le compilateur en mode de commande si c'est ça.
:?:

:arrow: « Utiliser le compilateur en ligne de commande »
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment intercepter les message d'érreurs...

Message par Shadow »

Oui bon alors ça je connais effectivement.
Mais ça ne résous pas mon problè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.
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Re: Comment intercepter les message d'érreurs...

Message par Fred »

C'est une erreur runtime, qui apparait que lorsque le programme est executé (pas à la compilation)
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment intercepter les message d'érreurs...

Message par Shadow »

Fred a écrit :C'est une erreur runtime, qui apparait que lorsque le programme est executé (pas à la compilation)
Ok donc une fois exécuté après la compilation donc si j'ai bien compris.
Est ce que je dois utiliser les fonction RunTime pour accéder à ses erreur et si oui comment je peu faire ça ?
Merci Fred.
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
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Comment intercepter les message d'érreurs...

Message par JohnJohnsonSHERMAN »

Tu peux utiliser la librairie OnError pour cela, elle impacte légérement la vitesse d'exécution mais permet de renseigner sur une erreur d'exécution sans utilisation du débogueur :)

Je te laisse consulter la documentation à ce sujet :P
"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é
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment intercepter les message d'érreurs...

Message par Shadow »

J'ai déjà fais ça et ça ne fonctionne pas !
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
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Comment intercepter les message d'érreurs...

Message par SPH »

Shadow a écrit :J'ai déjà fais ça et ça ne fonctionne pas !
Peut etre que tu t'y prend mal :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment intercepter les message d'érreurs...

Message par Shadow »

Sait tu au moins de quoi tu parle :?:
Non je ne m'y prends pas mal, rien à voir ici.

Le compilateur n'intercepte et ne reporte pas certaine erreurs.
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'érreurs...

Message par falsam »

Je ne fais pas de compilation en ligne de commande. Mais je ferais comme ceci.

- Ne pas activer le déboguer/

- Dans les paramètres de compilation EN LIGNE ajoute /LINENUMBERING ce qui permet à la bibliothèque OnError d'indiquer le fichier et le numéro de ligne en cas d'erreur.

- Lors de ta compilation en ligne crée un source qui contiendra le code à compiler en ligne précédé de ces quelques lignes de code.

Code : Tout sélectionner

Procedure ErrorHandler()
  Protected ErrorLine = ErrorLine() - 6
  MessageRequester("OnError test", "The following error happened: " + ErrorMessage() + #CRLF$ + "Line " + Str(ErrorLine))
EndProcedure
OnErrorCall(@ErrorHandler())
;Code source à ajouter après ce commentaire
Ce qui donnera avec ton exemple Point(10, 45)

Code : Tout sélectionner

Procedure ErrorHandler()
  Protected ErrorLine = ErrorLine() - 6
  MessageRequester("OnError test", "The following error happened: " + ErrorMessage() + #CRLF$ + "Line " + Str(ErrorLine))
EndProcedure
OnErrorCall(@ErrorHandler())
;Code source à ajouter aprés ce commentaire
Point(10, 45)
Tu peux tester ça avec l'éditeur.

1 - Désactive le déboguer
2 - Paramètre de compilation : Coche la case Enable OnError lines support.
3 - F5 et tu auras le message : The following error happened : invalid memory access Line 1

PS Désolé pour l'anglais.
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%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment intercepter les message d'érreurs...

Message par Shadow »

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

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

Message par Shadow »

Bien maintenant j'aimerais pousser encore plus loin.

Avec cette méthode, j'ai bien le retour des erreur, Compilation et Exécution.
Cependant, jme pose toujours la question, comment fait l'id...

Par exemple pour ce code-ci:

Code : Tout sélectionner

Point(10, 45)
Avec mon code j'ai un IMA, ok bon mais c'est pas encore assez précis.
Dans L'id c'est dit:
StartDrawing() Doit être appelée avant une autre fonction 2DDraiwing.
Bon et comment il fait pour savoir ça ?
Fred à dit:
C'est une erreur runtime, qui apparait que lorsque le programme est executé (pas à la compilation)
Si je pouvais avoir plus d'information, voir un exemple ça aiderais bien.
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.
Répondre