IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Comment trouver une erreur


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut Comment trouver une erreur
    Voilà

    j'ai déjà eu plusieurs fois le problème j’exécute un programme et PAF!!

    Exception 'first chance' à $772FC42D. Classe d'exception ERangeError avec un message 'Erreur de vérification d'étendue'. Processus MonProg.exe (4740)

    Si je fait Arrêter dans la boite de dialogue qui signale l'erreur le debbuger m'amène à un endroit du code ou ce type d'erreur n'a pas lieu d'être. En effet il s'agit sans doute d'un problème de dépassement de tableau sauf que à cet endroit de mon code j'ouvre un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iFile:= FileOpen(NomFichier,fmOpenRead);
    $772FC42D me semble fortement correspondre à l'adresse du code où ça plante. Mais je ne vois pas comment y accéder.
    Quant au (4740) ça pourrait être une ligne du code source mais là encore je ne vois pas comment y accéder puisqu'elle ne correspond à aucune ligne de mon code source.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    Quant au (4740) ça pourrait être une ligne du code
    C'est le ProcessId.

  3. #3
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Donc il ne me sert pas à grand chose
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Personnellement, je laisse toujours cette option désactivé, l'exception en ERangeError est d'une imprécision totale, je l'évoquais
    Je l'active en de rare cas de débogage
    Je préfère faire manuellement les tests pour déclencher une ERangeError personnalisé

    Ce n'est pas toujours un tableau, cela peut être une valeur trop grande pour une énumération
    Utilises-tu toujours Low et High pour parcourir tes tableaux ?
    As-tu des boucles où tu joue du +1/-1 entre un tableau en indice zéro et un autre en indice un, moi, c'est ce cas là où j'ai le plus souvent ce problème
    une violation d'accès en R- quasiment impossible à déboguer
    une ERangeError en R+ normalement, on trouve plus facilement le code

    Fait CTRL + ALT + C pour voir le CPU, faire puis CTRL + G
    L'adresse contre toute attente en XE2, c'est en décimal donc 772FC42D = 1999619117
    tu peux avoir à cet endroit du code en ASM, tu peux éventuellement trouver le nom de la fonction en gras quelques lignes au dessus


    J'ai testé volontairement, cela m'a donné 75E7 C42D = 1978123309 pour voir ce que cela donne et cela n'a aucun intérêt :
    Exception 'first chance' à $75E7C42D. Classe d'exception ERangeError avec un message 'Erreur de vérification d'étendue'. Processus ZooVCL.exe (5420)
    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    KERNELBASE.RaiseException:
    75E7C3D5 8BFF             mov edi,edi
    75E7C3D7 55               push ebp
    75E7C3D8 8BEC             mov ebp,esp
    ...
    75E7C426 50               push eax
    75E7C427 FF155C11E775     call dword ptr [$75e7115c]
    75E7C42D C9               leave 
    75E7C42E C21000           ret $0010
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    J'ai finalement trouvé d'où venais le problème.
    Après le FileOpen je teste le iFile si ce dernier est >0 ça veut dire que mon fichier existe et que je l'ai ouvert et je continue.
    J'ai déclaré le iFile en integer et manifestement FileOpen en cas d'erreur (fichier absent en l'occurence) renvoie une valeur qui ne doit pas tenir dans un integer.
    Il y a bien débordement et le debugger m'avais amené au bon endroit.
    Mais je retiens le
    Fait CTRL + ALT + C pour voir le CPU, faire puis CTRL + G
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment intercepté une erreur
    Par Guillau.laurent dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/03/2006, 09h28
  2. Comment détecter une erreur dans un process
    Par chuckboy dans le forum MFC
    Réponses: 3
    Dernier message: 25/10/2005, 10h40
  3. Réponses: 18
    Dernier message: 19/10/2005, 14h07
  4. Comment lancer une erreur dans une procédure stockée
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2005, 17h06
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo