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 :

[compilation] Debug vs Release


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut [compilation] Debug vs Release
    Bonjour à tous,

    J'ai actuellement un programme on ne peut plus simple qui utilise la bibliothèque de traitement d'image Vigra:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <iostream>
    #include "vigra/stdimage.hxx"
    #include "vigra/impex.hxx"
    
    int main()
    {
    	try {
    
    	vigra::ImageImportInfo info("C2.bmp");
            
    	vigra_precondition(info.isGrayscale(), "please use grayscale image"); // Détection de contrat rompu...
    
             // create a gray scale image of appropriate size
            vigra::UInt16Image in(info.width(), info.height());
                
             // import the image just read
            importImage(info, destImage(in));
    
    	}
    
    	catch (vigra::StdException & e)
        {
            // catch any errors that might have occured and print their reason
            std::cout << e.what() << std::endl;
            return 1;
        }
    
    	return 0;
    }
    En release, le programme compile et fonctionne parfaitement.
    En mode débug, le programme compile et plante lamentablement sur
    Exception non gérée à 0x10232c38 (msvcr80d.dll) dans test.exe :
    La version débug de cette DLL est toute pourrie, ou bien c'est la bibliothèque qui ne gère pas bien le mode débug?

    Si vous avez une explication, je suis très preneur, merci !

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as de la chance : c'est en mode debug que ça plante, tu peux donc... debugger.
    Ca plante sur quelle ligne ?

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Oui je peux débugger, mais franchement ça donne rien du tout!
    Ca plante sur la ligne en rouge (j'ai édité le post du dessus)


    Citation Envoyé par Sortie de Visual
    Exception de première chance à 0x10232c38 (msvcr80d.dll) dans test.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xcccc0038.
    Exception non gérée à 0x10232c38 (msvcr80d.dll) dans test.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xcccc0038.
    Exception de première chance à 0x10232c38 (msvcr80d.dll) dans test.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xcccc0038.
    Exception non gérée à 0x10232c38 (msvcr80d.dll) dans test.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xcccc0038.
    Quand je vais fouiller dans la pile des appels, le dernier bout de code avant le code machine est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    static int __CLRCALL_OR_CDECL compare(const _Elem *_First1, const _Elem *_First2,
    size_t _Count)
    { // compare [_First1, _First1 + _Count) with [_First2, ...)
    // _DEBUG_POINTER(_First1);
    // _DEBUG_POINTER(_First2);
    return (::memcmp(_First1, _First2, _Count));
    }
    Ca bloque sur la ligne en rouge dans "msvcr80d.dll", alors qu'avec la même DLL, version Release, ça passe! J'ai vu ça quand je vois le chargement des symboles...

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Tu as bien verifie que les pointeurs sont valides?

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Tu as bien verifie que les pointeurs sont valides?
    Oui, puisque que ça marche en Release...
    CE qui est marrant, c'est que mon bloc catch n'attrape aucune exception, j'ai le droit à une exception non gérée...
    idem avec une std::exception (encapsulée dans la classe vigra::StdException e crois).

    Je viens d'avoir une réponse par mail du créateur de la librairie:
    Since the Properties of the Debug and Release
    versions are independently set, it is not unlikely that I forgot
    something in the Debug config (I almost always work with the Release
    build -- the Debug is just too slow).
    Comment est-ce possible?

    Merci de votre coup de main.

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par poukill
    Oui, puisque que ça marche en Release...
    Ce n'est pas une preuve.

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

Discussions similaires

  1. Pb Compilation Debug / Release
    Par cjacquel dans le forum MFC
    Réponses: 3
    Dernier message: 20/02/2015, 10h33
  2. [VB.NET] Vérifier la valeur de compilation debug
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/02/2008, 19h11
  3. [VC++6][DLL][WinXP]option de compilation debug/release
    Par ben_popcorn dans le forum Visual C++
    Réponses: 7
    Dernier message: 02/02/2007, 10h25
  4. debug et release
    Par moldavi dans le forum C++
    Réponses: 13
    Dernier message: 15/01/2005, 18h41
  5. Condition sur debug et release
    Par xave dans le forum MFC
    Réponses: 3
    Dernier message: 04/02/2004, 15h04

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