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 :

-debug > variable globale


Sujet :

C

  1. #1
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut -debug > variable globale
    Bonjour.

    J'ai un programme qui me permet de convertir une sélection d'une base de données en une page HTML. Elle commence à grossir beaucoup, et j'ai encore quelques bugs qui fleurissent ici ou là.
    Les erreurs peuvent survenir un peu partout, et j'ai souvent recours à des printf pour tracer mes variables. Vu la taille conséquente que commence à prendre le programme (700 lignes c'est pas gigantesque, mais ça pèse un peu quand même), je ne peux pas me permettre de supprimer ou de remettre des printf un peu partout à chaque fois que j'ai un problème.

    J'aimerais pouvoir rajouter en paramètre une option -debug qui activerait ou pas les printf qui me permettrent de suivre le déroulement du programme.

    La gestion des paramètres se fait dans le main et j'aimerai que cette variable debug soit globale. Je ne voudrais pas avoir à rajouter comme paramètre à toutes mes fonctions un int debug.
    Puis je faire un #DEFINE dans mon main ? ça me paraît plutôt laid.
    Et puis surtout le #define a lieu avant que les if ne soient interprétés. Je sais qu'il existe #ifdef et #ifndef mais ça ne m'aide pas des masses.

    Je ne sais pas trop comment m'y prendre. Pourtant c'est bêbette comme question.

    Merci d'avance.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 77
    Points : 83
    Points
    83
    Par défaut
    je crois que les macro TRACE devraient faire l'affaire, je crois que c'est pas standard, mais beaucoup de compilos les supportent

  3. #3
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    pour info, voici ma méthode, ce n'est sûrement pas la meilleur, je suis aussi interessé par d'autre suggestions.

    je crée un fichier debug.h dans lequel je metet j'inclus ce fichier dans tous mes *.c
    Puis pour afficher des messages je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "debug.h"
     
    ...
     
    #ifdef DEBUG
        printf("..................
    #endif
    Quand mon appli est au point je modifie debug.h pour ne plus avoir les messagesvoila je reconnais que c'est un peu lourd mais c'est simple

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par bjousse
    je crois que les macro TRACE devraient faire l'affaire, je crois que c'est pas standard, mais beaucoup de compilos les supportent
    qu'est ce que tu entends par là ?



    J'aimerai trouver un moyen de ne pas avoir à modifier de code du tout. c'est à dire qu'en fonction de la façon dont je compile ou de la façon dont je lance le programme, les printf soient activés.

    Peut être est il possible de passer un paramètre à gcc qui modifiera la compilation en conséquence.

    Je suis sûr qu'Emmanuel Delahaye doit avoir une solution pour ça.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 77
    Points : 83
    Points
    83
    Par défaut
    En gros, c'est une macro du type

    #ifdef NDEBUG
    #define TRACE(a, b) printf(a,b)
    #else
    #define TRACE(a,b)
    #endif
    qu'on utilise comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRACE(hfTrace, "du texte.....") ;

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: -debug > variable globale
    Citation Envoyé par ggnore
    J'ai un programme qui me permet de convertir une sélection d'une base de données en une page HTML. Elle commence à grossir beaucoup, et j'ai encore quelques bugs qui fleurissent ici ou là.
    Les erreurs peuvent survenir un peu partout, et j'ai souvent recours à des printf pour tracer mes variables. Vu la taille conséquente que commence à prendre le programme (700 lignes c'est pas gigantesque, mais ça pèse un peu quand même), je ne peux pas me permettre de supprimer ou de remettre des printf un peu partout à chaque fois que j'ai un problème.

    J'aimerais pouvoir rajouter en paramètre une option -debug qui activerait ou pas les printf qui me permettrent de suivre le déroulement du programme.

    La gestion des paramètres se fait dans le main et j'aimerai que cette variable debug soit globale. Je ne voudrais pas avoir à rajouter comme paramètre à toutes mes fonctions un int debug.
    Puis je faire un #DEFINE dans mon main ? ça me paraît plutôt laid.
    Et puis surtout le #define a lieu avant que les if ne soient interprétés. Je sais qu'il existe #ifdef et #ifndef mais ça ne m'aide pas des masses.

    Je ne sais pas trop comment m'y prendre. Pourtant c'est bêbette comme question.
    Voilà comment je fais. Dans un header global (trace.h, par exemple), je définis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* trace.h */
    #include <stdio.h>
     
    #define PRINTF(a) printf a
    #define EOL "\n"
    Que j'inclus dans les fichier où j'ai besoin de faire des traces.

    Ensuite, ça s'utilise comme un printf(), sauf qu'il faut 2 parenthèses:
    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
     
    /* main.c */
    #include "trace.h"
     
    #define DBG 1 /* 0 | 1 */
     
    #if DBG
    #else
    #define PRINTF(a) 
    #endif
     
    int main (void)
    {
       PRINTF (("Hello world, %d\n", 2004));
     
       return 0;
    }
    Pas de Wi-Fi à la maison : CPL

  7. #7
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    Citation Envoyé par ggnore
    Peut être est il possible de passer un paramètre à gcc qui modifiera la compilation en conséquence.
    Je crois que l'option -D de gcc permet de définir un symbole

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Merci à tous.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

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

Discussions similaires

  1. accéder variable global en debug visual studio c++/cli
    Par musecyan dans le forum Visual Studio
    Réponses: 0
    Dernier message: 06/11/2013, 13h49
  2. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20
  3. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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