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

C++ Discussion :

Résultat différent en DEBUG et en RELEASE


Sujet :

C++

  1. #1
    Membre confirmé Avatar de beni46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut Résultat différent en DEBUG et en RELEASE
    Bonjour a tous,

    J'ai chercher dans la FAQ et sur le forum mais je n'ai pas trouvé ce que je cherchais alors je vais expliquer mon prbolème.

    En faite je fais un jeux de billard en C++ sous Visual studio 2005 à l'aide du moteur physique ODE et de la libraire OPenGL.

    Mon problème est qu'il n'y a pas de collisions entre les billes du billard en DEBUG alors qu'il y en a en release RELEASE. Généralement il y a le problème inverse a cause de problèmes d'initialisation et de déssalocation.

    J'ai fait attention a toute les initialisations et toute les allocations de mémoire.
    Je ne vois pas comment "diagnostiquer" le problème.

    Si vous avez des idées je suis preneur.
    Merci

    A bientot

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    1) Mettre des affichages ou écrire dans des fichiers dans le mode release.

    2) Si le programme est modulaire, alors mettre des constantes de compilation et enlever des parties de code pour vérifier si tout devient OK en mode release sans une partie du code.

    On l'a tous fait...

  3. #3
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Par défaut

    Tu peux aussi essayer de customizer la compilation sous Visual. Tu mes les options de compil à mis chemin entre une Debug et une Release et tu testes. ça te permettra de bénéficier des affichages à la volée en mode Debug et peut être d'identifier ton problème.

  4. #4
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Et aussi, comme cela vient sûrement de problème liés à l'utilisation de ODE, tu peux poster ton message dans la section http://www.developpez.net/forums/forumdisplay.php?f=539 , non ?

  5. #5
    Membre confirmé Avatar de beni46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    Merci pour vos réponses je vais tester tous ça.

    @bayard: le mode release est OK, c'est le mode debug qui ne fonctionne pas.

    @valeford: Pas de problème, je voulais pas spammer mais si c'est permis lol.

    Bye

  6. #6
    Membre confirmé Avatar de beni46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    En suivant vos conseils j'ai vite trouvé mon problème.

    En faite le Basic RunTime Check était : Both (/RTC1, equiv. to /RTCsu)

    et je l'ai changer à : Uninitialized Variables (/RTCu)

    Mon programme marche pour les deux cas, mais est que ce genre de modification peut nuire a mon programme?

    Uninitialized Variables = Non initialisation automatique des variable??

    Merci pour votre aide

    Bye

  7. #7
    screetch
    Invité(e)
    Par défaut
    Cela signifie de maniere quasiment certaine que tu as un objet sur la pile qui n'est pas initialisé et tu le transmets a une fonction qui l'utilise.

    Le flag que tu changes a un comportement sur l'initialisation des variables et de la pile; par defaut en release rien n'est fait et si tu oublies d'initialiser un truc alors il contient la valeur qu'il y avait a cet emplacement avant (autrement dit de la merde)

    En debug, le compilateur initialise l'espace avec de l'hexadecimal defini (0xDDDDDDDD) et les variables allouees avec new avec un autre pattern (0xCDCDCDCD). Cela cause immanquablement un crash dans le programme lorsqu'on utilise puisuqe si c'est un entier ca vaut tres beaucoup, et si c'est un pointeur il pointe dans la moquette. Sauf... dans le cas des bouleens, qui prennent alors la valeur true tout le temps.

    Je suppose donc que ton programme mets sur la pile un truc pas initialise; en debug il vaudra true et en release, sa valeur dependra de certains parametre comme la position de Jupiter ou le coefficient de maree. Mais bon le pattern le plus frequent est 0 en memoire en general (enfin j'ai pas fait de stats mais ca doit arriver en tete) si bien que ca peut changer le deroulement du programme.



    Vu le comportement de ton programme je suppose que la fonction ODE a une fonction genre ODE_Init ou un truc du genre, prend en parametre une structure que tu as allouee sur la pile. Verifie que tous les champs de la structure sont bien affectes! Enfin bref verifie tes appels a ODE et leurs parametres, si tu as une variable qui n'est pas un pointeur verifie la tout de suite.

  8. #8
    Membre confirmé Avatar de beni46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    Ca a fonctionné. J'ai passer toute mes valeurs par pointeur et non de façon classique.

    Merci

Discussions similaires

  1. Résultats différents en debug mode
    Par Titahn dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/10/2013, 19h43
  2. VS2008 Comportement différent entre debug et release
    Par Ardis dans le forum Visual Studio
    Réponses: 1
    Dernier message: 19/03/2011, 09h41
  3. [SSE/MMX] Résultat en mode débug est différent de celui du mode release
    Par barhili04 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 08/12/2009, 19h29
  4. Réponses: 4
    Dernier message: 05/03/2009, 16h55
  5. Réponses: 15
    Dernier message: 21/01/2005, 03h25

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