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

MFC Discussion :

plantage en release


Sujet :

MFC

  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut plantage en release
    Bonjour à tous,

    j'ai un gros soucis et je suis saisi par cet horrible sentiment d'impuissance que je n'avais pas connu depuis longtemps.

    Je travaille sur un gros projet de type MDI. Ce projet comporte tout un tas de fenêtres, et j'en ai rajouté une. Mon code fonctionne parfaitement en debug, aucun warning, rien, nikel. Mais en release, ça plante violemment et je ne parviens pas à trouver où.

    L'appli se lance sans problème, et dès que j'ouvre ma fenêtre, elle s'affiche et puis immédiatement, ça plante avec le message d'erreur classique:
    Unhandled exception: 0xC0000005: Acces Violation
    Et puis je me retrouve dans le "Disassembly".

    Alors j'ai mis des points d'arrêts sur toutes les méthodes de mon code, mais ça plante ailleurs. Mais où? (Le projet est trop énorme pour mettre des points d'arrêt de partout)

    Donc voilà, j'y ai déjà passé pas mal de temps et je ne vois pas comment faire pour m'en sortir. Je vous expose mon problème dans l'espoir que vous auriez des idées à me proposer pour trouver la source du problème. Des méthodes, des outils, des conseils, n'importe quoi qui pourrait m'ouvrir une piste.

    Quelques précisions:
    - je travaille sous visual6
    - je n'ai pas rajouté de dll. Mon code est inclu dans l'executable.
    - je n'ai pas modifé le reste du code du projet. Je me suis contenté de rajouter des fichiers. Je n'ai pas non plus modifié les "settings" du projet.
    - quand je passe l'executable au "view dependencies", il n'y a aucun problème détecté.

    Merci

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    j'ai trouvé ca sur le forum :

    L'erreur Citation:
    Unhandled exception in .exe : 0xC0000005: Acces Violation
    Est, je crois, un problème de pointeur mal ou pas initialisé.
    maintenant ou ... je ne sais pas :d

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu peux peut etre commencer par mettre dans les options de compil la generation des infos de debug en release...
    et voir si ça plante a nouveau ,ça devrait te donner l'indication de la fonction en cause
    si le bug est reproductible a souhait ,c'est pas trop grave, tu devrais trouver
    si c'est aléatoire c'est certainement un debordement mémoire et c'est plus embetant..

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par farscape
    salut,
    tu peux peut etre commencer par mettre dans les options de compil la generation des infos de debug en release...
    Ce qui signifie? Dans le combo "debug info", je dois mettre quoi? (il y a déjà "Program Database").

    Sinon, ce qui est génant, c'est que si je modifie les options de compilation, je vais devoir tout recompiler. Or ce *#%! projet met près d'une heure à compiler!!

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    oui,
    attention normalement en release il devrait y avoir none...
    ça ne te donne pas l'information de l'endroit du plantage ?

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    ça compile...
    J'ai mis "Edit and continue..." quelque chose dans le style (je ne peux pas regarder les settings pendant que ça compile Et j'ai dû supprimer les optimisations.
    Mais sinon, je ne vois pas trop comment cela pourrait me donner l'endroit du plantage, puisque finalement, je me retrouve avec les mêmes options qu'en Debug. Enfin, je vais voir ça dès que ça aura fini de compiler...

    (Je crois que je vais réclamer un 2eme pc...)

  7. #7
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    arrrgghhh, alors voilà ce qu'il se passe:
    J'obtiens exactement le même plantage, et lorsque ça plante, je me retrouve dans le Disassembly et la callstack est vide.

    ... mais où ais-je rangé ma corde...

    au cas où, ça plante à la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0012FC1A   adc         al,byte ptr [eax]

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    ça plante direct ?
    c'est reproductible ?
    tu es sur de tout tes modules (dll) ?

    ... mais où ais-je rangé ma corde...
    a sauter ?

  9. #9
    Membre confirmé Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par défaut
    je me rappele avoir eu un problème similaire mais sur un projet de petite taille
    et j'avais tout simplement effacé le dossier release et recompiler et ca avait marcher
    apres je sais pas si c'est exactement le même problème, ca se trouve c'est pas du tout ca ( et c'est surement pas ca )

  10. #10
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Oui ça plante direct: la fenêtre s'affiche entièrement et puis ça plante immédiatement après. En fait, j'avais mis des points d'arrêt de partous dans mon code, et en particulier dans le PreTranslateMessage. Cela m'a permi d'assister à la construction, contrôle par contrôle, de ma fenêtre. En d'autres circonstances, s'eût put être amusant. Quoi qu'il en soit, j'arrive à maitriser l'execution tant qu'il est dans mon code (grâce aux point d'arrêts et au mode pas à pas), et tout semble bien se dérouler (méfiez-vous de l'eau qui dort disait l'autre). Mais dès que l'exécution sort de mon code, je ne peux sincèrement pas suivre l'exécution, je me retrouve direct dans de l'asm.

    C'est reproductible oui. Ca plante toujours au même endroit. Quant aux dll, bah elle fonctionnaient très bien avant que je "commette" mon code. Et puis le "view dépendencies" ne me signale rien de particulier.

    Bon, je ne retrouve pas ma corde, mais quand tu as dit "sauter", ça m'a donné une idée... mon bureau est au 5eme étage...

  11. #11
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    On peut voir le code que tu as ajouté ?

    Regardes si tu n'as pas de buffer overflow, parceque le plus souvent c'est ça le problème.

  12. #12
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par lenouvo
    je me rappele avoir eu un problème similaire mais sur un projet de petite taille
    et j'avais tout simplement effacé le dossier release et recompiler et ca avait marcher
    apres je sais pas si c'est exactement le même problème, ca se trouve c'est pas du tout ca ( et c'est surement pas ca )
    Merci pour ton aide , mais ça fait déjà 3 fois que je recompile (environ 1h pour compiler, je m'en souviens). Et puis j'ai la même erreur sur un autre poste ou l'appli a également été recompilée plusieurs fois...

  13. #13
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Si tu dis que ton code plante alors que tu n'as rien changé au reste du code, c'est forcément lors d'un appel à une méthode ou lors de la création d'une classe externe que tu as oublié de préciser un paramètre, ou bien que tu as un paramètre null qui passe...

    Ton code est-il énorme ?
    Si j'étais toi, voila ce que je ferais : Je prendrais tous les endroits qui font appel vers des méthodes extérieures, et je chercherais à voir si les paramètres sont tous bien initialisés. ensuite, je vérifierais que dans ton environnement de release tu as bien tous les fichiers de config necessaire... Et que toutes les optins y sont présentes !

    Sinon....

    Repère l'endroit du plantage, et montre le code, peut-être qu'on pourra t'aider d'avantage ?

    Désolé de ne pas avoir d'autres idées, A+ et bonne chance !

  14. #14
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Mayti4
    On peut voir le code que tu as ajouté ?
    Euh, il y a plusieurs milliers de lignes de code!

    Citation Envoyé par Mayti4
    Regardes si tu n'as pas de buffer overflow, parceque le plus souvent c'est ça le problème.
    Oui, comment je fais ça?

    P.S: je n'utilise aucun tableau, uniquement les conteneurs de la stl (map, vector, list). Pas de char* non plus, uniquement des CString (pas de std::string non plus).

  15. #15
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    ça ressemble quand meme a un probleme de module pas en rapport .
    modif mal repercutée .
    exemple modif d'un .h d'un lib qui fait partie de stadfx.h .
    si on ne fait pas un clean rebuild all ,9/10 la modif passe a la trappe.
    attention aussi si tu as des changements d'alignement.
    des lib crt differentes avec des allocations et liberations qui ne sont pas faites dans le meme module .

  16. #16
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Oui non mais là vous voyez quand même quoi:
    * j'ai "cleané" et "rebuildé" mon projet 3 fois
    * je me connais... j'ai dû faire une bourde débile du style une erreur sur un nom de ressource ou une c****ie dans le style.



    J'ai des amis qui cherchent quelqu'un pour vendre des kébabs. Je crois qu'il est temps de penser à la reconversion...

  17. #17
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Tous les métiers se ressemblent, en vendant des kebabs si ça se trouve, tu ne trouverais plus tes oignons properties...

    [blague pas drole : off]

    Il y a t-il des différences entre tes deux environnements ? Peut-être un problème d'encoding ?

  18. #18
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Il y a t-il des différences entre tes deux environnements ? Peut-être un problème d'encoding ?
    Tu veux dire entre le debug et le release?

  19. #19
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Waaahhh ça y est, j'ai trouvé!!!! J'ai trouvé la ligne qui fait tout planter. En fait, ça fait planter à tel point que visual perd tout: la callstack etc.
    Cependant, je ne comprends pas pourquoi ça plante.

    La ligne qui fait planter c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UpdateDialogControls(this, false);
    C'est la dernière ligne du DoDataExchange() de la dialogbar de ma fenêtre. Mais malheureusement, je ne parviens pas à rentrer dans le code de la fonction (F11).

    M'en fous, je partirais pas en week-end tant que ça ne marchera pas

  20. #20
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Il y a t-il des différences entre tes deux environnements ? Peut-être un problème d'encoding ?
    Oui VC++ alloue plus de pile d'appel et d'espace mémoire en mode debug qu'en release.
    Consulter MSDN

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VS2005] Plantage Release / Debug
    Par Nico28 dans le forum Visual Studio
    Réponses: 8
    Dernier message: 10/07/2008, 10h50
  2. Plantage avec AfxGetResourceHandle uniquement en Release
    Par cathar_rhythm dans le forum Windows
    Réponses: 1
    Dernier message: 28/04/2008, 18h05
  3. Plantage de la version Release sous .NET
    Par mastergoddot dans le forum Visual C++
    Réponses: 4
    Dernier message: 22/05/2007, 15h46
  4. [MFC] Plantage postmessage en release
    Par Hepm dans le forum MFC
    Réponses: 16
    Dernier message: 27/05/2006, 11h55
  5. Réponses: 11
    Dernier message: 20/03/2006, 14h42

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