Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Membre régulier
    Homme Profil pro Bernard
    Ingénieur développement en retraite
    Inscrit en
    juin 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Nom : Homme Bernard
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2002
    Messages : 114
    Points : 78
    Points
    78

    Par défaut Runtime Error 216

    Bonjour,

    J'ai une application développée avec D2010 sous Seven.
    Sous Seven elle tourne sans soucis.
    Sous XP elle se plante au départ (même pas d'affichage de la fenêtre principale) et me donne un RunTime Error 216 à 00404FB2

    Y a-t-il moyen de remonter de 00404FB2 à la ligne de code ?

    Merci

    Bernard

  2. #2
    Membre régulier
    Homme Profil pro Bernard
    Ingénieur développement en retraite
    Inscrit en
    juin 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Nom : Homme Bernard
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2002
    Messages : 114
    Points : 78
    Points
    78

    Par défaut

    J'ai un peu progressé dans la recherche du bug :
    Le pb est dès le départ, il n'apparait sous Seven et que si je fais du débuggage pas à pas avec F7 et avec la fenetre CPU ouverte !!
    Sur le premier F7 (lancement de l'application) la fenetre CPU affiche :
    RecadrerPhotos.dpr.11: begin
    005F6564 E9979A5071 jmp $71b00000
    005F6569 F0B8C4AF5E00 lock mov eax,$005eafc4
    005F656F E8C84BE1FF call @InitExe
    un F7 de plus et la fenetre CPU affiche :
    71B00000 B80000B071 mov eax,$71b00000
    71B00005 B92D02B071 mov ecx,$71b0022d
    71B0000A FFD1 call ecx
    71B0000C 64655F pop edi
    71B0000F 00558B add [ebp-$75],dl
    71B00012 EC in al,dx
    71B00013 83C43E add esp,$3e
    71B00016 004000 add [eax+$00],al
    J'avance avec F7, les deux "mov" se passent bien, mais le "call ecx" fait monter la fenêtre d'erreur du débuggeur avec ce message :
    access violation at 0x005f65d2: write of address 0x00000000. Processus stoppé.....
    Je clique sur OK et la fenetre CPU affiche :
    005F65D2 0000 add [eax],al
    005F65D4 0000 add [eax],al
    005F65D6 0000 add [eax],al
    005F65D8 0000 add [eax],al
    005F65DA 0000 add [eax],al
    005F65DC 0000 add [eax],al
    005F65DE 0000 add [eax],al
    005F65E0 0000 add [eax],al
    005F65E2 0000 add [eax],al
    005F65E4 0000 add [eax],al
    005F65E6 0000 add [eax],al
    005F65E8 0000 add [eax],al
    005F65EA 0000 add [eax],al
    005F65EC 0000 add [eax],al
    005F65EE 0000 add [eax],al
    005F65F0 0000 add [eax],al
    005F65F2 0000 add [eax],al
    005F65F4 0000 add [eax],al
    et il n'est pas possible d'aller plus loin.
    En mode pas à pas avec F7 sans fenetre CPU aucune erreur ne monte !
    Il n'y a aucun filtrage d'erreur dans le débuggeur !
    Sous XP plantage assuré, sous Seven tout fonctionne !

    Merci de m'aider.

  3. #3
    Membre actif
    Homme Profil pro Paul LAUTIER
    ingénieur, retraité
    Inscrit en
    février 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul LAUTIER
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité

    Informations forums :
    Inscription : février 2007
    Messages : 172
    Points : 151
    Points
    151

    Par défaut

    Bonjour,

    L'erreur 216 est une erreur d'accés :
    EAccessViolation est la classe des exceptions des erreurs dues à des accès incorrects à la mémoire.

    Unité

    sysutils

    Description

    L'exception EAccessViolation est déclenchée quand une application :

    Déréférence un pointeur nil.
    Ecrit dans une page de code.
    Essaye d'accéder à une adresse mémoire pour laquelle il n'y a pas de mémoire virtuelle allouée à l'application.

    En tant que descendant de EExternal, EAccessViolation sauvegarde l'enregistrement d'exception Windows (s'il existe) dans sa structure de données ExceptionRecord.

    Remarque

    Les applications ne doivent pas déclencher directement d'exception EAccessViolation. C'est l'exécution qui déclenche cette exception.
    à rechercher dans votre code.

    PL

  4. #4
    Membre Expert Avatar de philnext
    Inscrit en
    octobre 2002
    Messages
    1 514
    Détails du profil
    Informations forums :
    Inscription : octobre 2002
    Messages : 1 514
    Points : 1 487
    Points
    1 487

    Par défaut

    La question est : à quel endroit de ton code Delphi ça plante ? Tu met le code et tu indiques à quelle ligne ça plante & là on peut aider.

  5. #5
    Membre régulier
    Homme Profil pro Bernard
    Ingénieur développement en retraite
    Inscrit en
    juin 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Nom : Homme Bernard
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2002
    Messages : 114
    Points : 78
    Points
    78

    Par défaut

    Merci, c'est gentil de vouloir m'aider.

    Le pb c'est que ça plante à l'exécution avant d'afficher la fenêtre principale donc certainement dans l'initialisation d'une unité.
    Mais où : je ne sais pas

    Il faudrait pouvoir remonter à ligne de code à partir de l'adresse fournie par l'erreur :
    RunTime Error 216 à 00404FB2


    Il me semble que sous D3 ou D5 on pouvait. Sous D2010 je n'ai pas retrouvé cette possibilité.

    Merci

  6. #6
    Expert Confirmé Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    mai 2002
    Messages
    2 234
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2002
    Messages : 2 234
    Points : 2 585
    Points
    2 585

    Par défaut

    Pourquoi ne pas faire du pas-à-pas dans le source du projet ?
    Tu saurais au moins quelle unité plante.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.
    ______________________________________________________________________________________________________________________________________________________________

    Delphi 6#2 Entreprise - Delphi 2010 Architecte - Delphi XE2 Entreprise - Visual studio 2003
    Win XP Pro - OpenGL 2.1 - Oracle 10g - Firebird 2.5.0.2
    Écrivez dans un français correct !!

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro Yves Lemaire
    Biologiste ; Progr(amateur)
    Inscrit en
    mars 2005
    Messages
    2 133
    Détails du profil
    Informations personnelles :
    Nom : Homme Yves Lemaire
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : mars 2005
    Messages : 2 133
    Points : 4 123
    Points
    4 123

    Par défaut

    si j'ai bien lu, cela n'arrive que sous XP alors que c'est développé sous Seven => pas de F7 !

    pê ajouter des lignes de log pour situer le point critique ?
    Delphi 5 Pro et Code Typhon 4.41 sous Win 7 64 bits - Code Typhon 4.50 sous Ubuntu 12.04 64 bits (VM)

  8. #8
    Membre régulier
    Homme Profil pro Bernard
    Ingénieur développement en retraite
    Inscrit en
    juin 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Nom : Homme Bernard
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2002
    Messages : 114
    Points : 78
    Points
    78

    Par défaut

    F7 dès le départ : le bug ne se produit pas sous Seven

    Même avec F7 on ne trace pas dans les parties initialization des unités !

    Hier au soir j'ai pris le taureau par les cornes et j'ai procédé par élimination :
    J'ai viré toutes les fenetres autres que la principale. Compilation transfert vers la machine sous XP l'appli démarre.
    Donc c'est dans une des fenetres supplémentaires (je crois que c'est une chance c'est plus simple à gérer). Je trouve quelle fenetre.
    Dans cette fenetre, j'enlève toutes les clauses uses sauf celles de Delphi. Ca marche !
    Je rajoute une à une les autres unités jusqu'à retrouver le pb.
    Rien que de la mettre dans le uses sans faire appel à elle suffit à planter. C'est dans la partie initialization que ça se passe.
    Voir le source de cette unité GR32_Types.pas en PJ.

    Je n'ai pas compris où est le problème, j'ai trouvé une autre solution vu qu'avec D2010 on peut ajouter des ressources simplement.

    Par contre je pose toujours la question : Peut-on remonter à la ligne du source correspondant à une adresse de l'exe ?

    Merci à Tous
    Fichiers attachés Fichiers attachés

  9. #9
    Modérateur
    Avatar de tourlourou
    Homme Profil pro Yves Lemaire
    Biologiste ; Progr(amateur)
    Inscrit en
    mars 2005
    Messages
    2 133
    Détails du profil
    Informations personnelles :
    Nom : Homme Yves Lemaire
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : mars 2005
    Messages : 2 133
    Points : 4 123
    Points
    4 123

    Par défaut

    Code :
     ResDir := Pointer(PChar(ResPointer) + 6 + Index * SizeOf(TCursorResDir));
    il faudrait peut-être vérifier la taille des (P)Chars, même si je ne vois pas pourquoi elle serait différente entre XP et Seven...
    Delphi 5 Pro et Code Typhon 4.41 sous Win 7 64 bits - Code Typhon 4.50 sous Ubuntu 12.04 64 bits (VM)

  10. #10
    Membre Expert Avatar de philnext
    Inscrit en
    octobre 2002
    Messages
    1 514
    Détails du profil
    Informations forums :
    Inscription : octobre 2002
    Messages : 1 514
    Points : 1 487
    Points
    1 487

    Par défaut

    Sinon tu peux essayer avec un soft style MadExecpt :
    http://madshi.net/madExceptDescription.htm

  11. #11
    Membre régulier
    Homme Profil pro Bernard
    Ingénieur développement en retraite
    Inscrit en
    juin 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Nom : Homme Bernard
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2002
    Messages : 114
    Points : 78
    Points
    78

    Par défaut

    Merci

    Je vais tester MadExecpt. Je ne connaissais pas, leur pub semble prometteuse !!

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •