Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2755 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Directive de compilation: NDEBUG _DEBUG

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Directive de compilation: NDEBUG _DEBUG

n°1254106
papangue
Posté le 27-11-2005 à 12:02:19  profilanswer
 

Bonjour à tous,
J'ai un léger soucis de compilation sous VS2003. J'ai le code d'une appli à compiler. En mode debug ca marche très bien, alors que en release l'appli ne semble même pas démarrer. Après désactivation de tous les paramètres d'optimisations du mode release ca ne marchait toujours pas! Bref j'était bien dans le cac  :fou:. Finallement pour revenir au mode debug il ne me restait plus qu'à modifier la variable de précompilation NDEBUG en _DEBUG et la ca marche!
Pour résumer:
         en mode release si la variable NDEBUG est définit l'appli bug
                                si la variable _DEBUG est définit l'appli fonctionne très bien
 
D'où la question à quoi sert ces variables _DEBUG/NDEBUG?
Parce que je suis un peu pommer sur ce point!
 
la seule chose que j'ai pu trouver dans le code c'est:

Code :
  1. #ifdef _DEBUG
  2. #define new DEBUG_NEW
  3. #undef THIS_FILE
  4. static char THIS_FILE[] = __FILE__;
  5. #endif


Ce code est au debut de chaque fichier cpp.
 
Bref si vous avez des info?
 
Merci

mood
Publicité
Posté le 27-11-2005 à 12:02:19  profilanswer
 

n°1254541
slash33
Posté le 28-11-2005 à 09:52:40  profilanswer
 

_DEBUG indique que tu travailles sur la version de debuggage de ton programme. Cela active certains outils de debuggage (macros TRACE, etc).
 
NDEBUG indique que tu travailles sur la version d'exploitation (autrement dit la version que tu devrais déployer en clientèle) d'où la désactivation du code de debuggage.
 
Reste que "configuration Debug" et "configuration Release" utilisée dans le jargon Visual ne veut plus rien dire si tu modifies les options de compilation.
 
Pour moi : ça sent la variable non initialisée ou un bug dans le code afférant à la version RELEASE. Regarde ton code placé entre #ifndef _DEBUG ... #endif ou #ifdef NDEBUG (déconseillé mais bon) ... #endif


Message édité par slash33 le 28-11-2005 à 09:55:35
n°1254893
papangue
Posté le 28-11-2005 à 19:42:05  profilanswer
 

Merci pour l'info mais tout ca je le savais.
comme tu peux le voir je n'ai rien mis dans les blocs de précompile... ce qu'il y a est le code généré de manière auto.
Du coup je suis un peu perdu dans tout ce mic mac, car dans le code il n'y a absolument pas de directive de précompilation (je le sais c'est moi qui l'ai fait).
De plus le code original été pour une version de visual studio .NET 2002 importé et converti sous visual studio .NET 2003
Après correction des incompatibilité de code entre les 2 versions sous 2003 ca ne marche absolument pas alors que sous 2002 ca marche impec!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Directive de compilation: NDEBUG _DEBUG

 

Sujets relatifs
[hibernate + eclipse] probleme de mapping et de compilationErreur compilation .o
erreur à la compilationCompilation de routines Fortran pour Unix sous windows
La compilation Java sous linuxDevcpp - compilation en cascade
Pb de compilation avec eclipse 3.11/cdt sdk 2.1.1pb compilation eclipse 3.1.1/cdt 2.1.1
Pb de compilationProbleme de compilation avec GDI+ sous DevCpp
Plus de sujets relatifs à : Directive de compilation: NDEBUG _DEBUG


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR