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 :

l'application ne se termine plus


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut l'application ne se termine plus
    J'ai une application principale et une dll.
    Depuis que j'ai fait quelques modifications dans la dll, l'application principale ne ferme plus.
    Si j'utilise la version antérieure de la dll, l'application se ferme correctement. J'en déduit que le problème provient de la dll.

    Pourtant, si je lance et que je ferme directement l'application sans rien faire d'autre, je ne fais pas appel aux fonctions de la dll.

    D'où peut provenir l'erreur ? comment débugger ce genre de problème ? je ne sais plus où chercher. Merci beaucoup

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 712
    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 712
    Points : 25 598
    Points
    25 598
    Par défaut
    Comment lie tu es fonction de ta DLL avec ton EXE ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LoadLibrary et GetProcAdress ?
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function FreeLibrary; external kernel32 name 'FreeLibrary';
    car si c'est la seconde forme, la dll est loadée, et donc il se pourrait qu'une libération se produisent mal, par exemple une destruction dans un finalize ...

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par ShaiLeTroll
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function FreeLibrary; external kernel32 name 'FreeLibrary';
    car si c'est la seconde forme, la dll est loadée, et donc il se pourrait qu'une libération se produisent mal, par exemple une destruction dans un finalize ...
    je la lie de cette façon. Bon, c'est donc quelque chose que je détruit mal, libère mal, je m'en doutais un peu.

    Comment je pourrais procéder pour débugger efficacement ? y a t il un moyen de pister ce qui est resté ouvert ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 712
    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 712
    Points : 25 598
    Points
    25 598
    Par défaut
    ajout des OutputDebugString (voir le journal d'évenement de Delphi), pour catcher les exception dans les clauses finalization (attention au Tcomponent qui libère leur component dont ils sont owner, ...)

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    j'ai trouvé la source du problème, je l'ai contourné provisoirement, mais ce n'est guère satisfaisant à part que provisoirement l'application se ferme.

    Récemment, dans un soucis d'améliorer la lisibilité du code, j'ai créer 2 fonctions dans une unités commune aux 2 projets : l'application et la dll. En fonctionnement pas de pb, sauf que c'est de là que vient le soucis.

    J'ai arrêté de partager cette unité, j'ai copier les 2 fonctions concernées dans une unité propre à la dll, sans changer une seule virgule, et là, pas de problème.

    Pourtant, j'ai déjà quelques autres unités qui sont partagées sans problème. A quoi est ce dû ? un conflit au niveau des variables ? Quelqu'un a t il rencontré ce problème ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/07/2009, 17h53
  2. Réponses: 0
    Dernier message: 15/07/2009, 16h02
  3. Application.Restart ne fonctionne plus
    Par Ishizaki dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/05/2008, 16h54
  4. Les sessions ne se terminent plus...
    Par Khrysby dans le forum ASP
    Réponses: 4
    Dernier message: 27/02/2008, 18h47
  5. [VB.NET] Application.Exit ne libère plus le programme....
    Par toniolol dans le forum Windows Forms
    Réponses: 4
    Dernier message: 25/01/2006, 10h17

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