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 :

macro DEBUG standard ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �m�rite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par d�faut macro DEBUG standard ?
    Salut,

    Je me demandais s'il existais une lib plus ou moins r�pandue qui inclue les habituelles macro de debug. Vous savez, cette macro qui affiche un commentaire en mode debug, mais qui n'est pas inclus au code en mode release.

    Il n'y aurait pas quelquechose comme cela dans la boost? (qqchose de sp�cifique au c++ avec des cout plutot que des printf)

    Je suis bien tent� de r��crire un truc moi meme, mais s'il y a quelquechose d'�volu� qui existe (ne serait qu'un .h), je suis preneur.


    pr�cision : ce n'est pas un bibiolth�que de log (exemple log4cxx) que je cherche. je cherche quelque chose qui ne s'incruste pas au code de la release

  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
    Il faudrait �tre plus pr�cis quant � ce que tu cherches. Si ce n'est pas tr�s �volu� c'est tr�s facile � coder :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    #ifndef NDEBUG
    #    define MyFunction(x) /* ce que tu veux */
    #else
    #    define MyFunction(x)
    #endif

  3. #3
    Membre �m�rite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par d�faut
    Disons que je cherche une lib qui permette de faire du logging de messages (dans la sortie standard ou dans un fichier), avec possibilit� de passer plusieurs param�tres, et que l'on puisse d�sactiver compl�tement (que le code ne soit pas inclus apr�s le post-processing afin d'�viter des tests pour savoir s'il faut afficher ou pas)

    Si en plus elle pouvait etre customizable pour qu'elle puisse ajouter automatiquement par exemple le num�ro de la ligne dans lequel le message a �t� g�n�r�, ce serait le top

    si en plus il existe d'autres macro, du type ASSERT ou d'autre que je connais pas ^^ je suis preneur aussi

    edit: en cherchant un peu je suis tomb� l� dessus, mais ca m'a l'air assez peu standard

    edit2 : zut, quel dommage

  4. #4
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

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

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Bien que rejet�e, la lib dont tu parles dans ton edit2 est disponible et fonctionnelle. Je l'utilise justement pour logger dans mon code en debug.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  5. #5
    Membre �m�rite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par d�faut
    ok c'est int�ressant alors. dis moi est ce qu'elle est automatiquement d�sactiv�e en mode d�bug ou est ce que tu dois l'entourer de directives #if DEBUG ?

  6. #6
    Expert confirm�

    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    4 253
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par d�faut
    Personnellement j'utilise un truc comme �a dans les tous chtis programmes
    (en g�n�ral je prefere un vrai systeme de logging).

    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
     
    #ifndef Logging_h_
    #define Logging_h_
     
    #ifdef _cplusplus
    extern "C" {
    #endif
    void logoutput_(const char* msg);
    void logoutputv(const char* msg, va_list vargs);
    void logoutput(const char* msg, ...);
     
    #ifdef _cplusplus
    }
    #endif
     
    #ifdef DEBUG
    #define LOG_DEBUG_(msg)       logoutput_(msg)
    #define LOG_DEBUG(msg,...)     logoutput(msg, __VA__ARGS__)
    #else
    #define LOG_DEBUG_(msg)
    #define LOG_DEBUG(msg,...)     
    #endif
     
     
    #endif
    Le .c (c'est vraiment du C )
    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
     
    #include "logging.h"
     
    void logoutput_(const char* msg)
    {
        #ifdef WIN32
        OutputDebugStringA(msg);
        #else
          ....
        #endif
    }
     
    void logoutputv(const char* fmt, va_list vargs)
    {
        // rajouter une allocation dynamique ici si besoin
        char buffer[512];
        sprintfv(buffer,512,fmt,vargs);
        logoutput_(buffer);
    }
     
    void logoutput(const char* fmt, ...)
    {
        va_list  vargs;
        va_start(vargs,fmt);
        logoutputv(vargs);
        va_end(vargs);
    }
    #endif

    Reste plus qu'� mettre des LOG_DEBUG("Un super objet en %08x",myObjectPtr); ou LOG_DEBUG_("Juste un message");

  7. #7
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

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

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par mamelouk Voir le message
    ok c'est int�ressant alors. dis moi est ce qu'elle est automatiquement d�sactiv�e en mode d�bug ou est ce que tu dois l'entourer de directives #if DEBUG ?
    Euh, l'inverse, non ?
    Et non, je n'ai rein besoin d'ajouter autour pour tout d�sactiver. En l'occurence, il s'agit vraiment de log de tr�s bas niveau (plus une aide au d�bug qu'un vrai log de diagnostique), donc je le d�sactive compl�tement et statiquement en release, mais pour du log plus normal, je le l'activerais/d�sactiverais dynamiquement, m�me en release, selon une configuration du produit. Il est aussi �tudi� pour avoir un faible co�t quand c'est dynamiquement qu'il n'est pas activ�.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

Discussions similaires

  1. [XL-2003] Ajouter un bouton au menu standard avec une macro
    Par loulag07 dans le forum Macros et VBA Excel
    R�ponses: 8
    Dernier message: 04/08/2012, 06h47
  2. [XL-2003] Relancer une macro apr�s debug
    Par Edaine dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 20/06/2011, 15h08
  3. [C++] Macro DEBUG ne marche pas sous Codeclocks
    Par Aspic dans le forum Code::Blocks
    R�ponses: 9
    Dernier message: 23/11/2010, 12h24
  4. Macros de debug
    Par gangsoleil dans le forum C
    R�ponses: 3
    Dernier message: 11/05/2010, 16h55
  5. [Toutes versions] une macro pour cr�er un module standard
    Par patricktoulon dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 29/12/2009, 17h42

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