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 :

[GCC] Options d'optimisation limitée à certains blocs de compilation


Sujet :

C

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 107
    Points : 189
    Points
    189
    Par défaut [GCC] Options d'optimisation limitée à certains blocs de compilation
    Bonjour,

    Lorsque l'on souhaite débugger une application, il est d' usage de supprimer les options d'optimisation du compilateur. Le problème est que la taille du code sans optimisation est plus importante.

    Par exemple dans le cas d'un projet, la différence d'espace mémoire occupé par le programme est de 51 %. Travaillant sur un système ayant peu de ressources mémoires, je cherche à sélectionné seulement les zones mémoires que je souhaite débugger.

    Existe-t-il un moyen d'épargner des fichiers ou des blocs de compilation de l'optimisation générale du compilateur pour permettre un débogage localisé ?

    Merci d'avance de vos suggestions.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 84
    Points
    84
    Par défaut
    Salut,

    Je ne garantie pas que ça fonctionne car je n'ai jamais essayé mais si t'utilises un makefile, qu'est-ce qui empêcherait de mettre l'option -g de débuggage seulement sur les fichiers que tu souhaites étudier ?

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    +1 pour sperca qui met en lumière un détail important : il y a d'un côté les options d'optimisation et, de l'autre, les flags d'inclusion des symboles de déboguage qui, eux, prennent de la place. Et ce n'est pas la même chose, bien sûr.

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Les flags de compilation s'appliquent à une unité de compilation (un .c) donnée. Tu peux donc désactiver l'optimisation et ajouter les informations de débogage pour un .c particulier, et garder tes options de compilations standard pour les autres.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 107
    Points : 189
    Points
    189
    Par défaut
    Merci de vos réponses.

    J'utilise bien un makefile mais qui est inaccessible. Il est généré automatiquement par mon IDE. C'est l'IDE AVR Studio 5 de chez Atmel. Ce fichier makefile est écrasé et régénéré à chaque compilation même si aucune modification n'a été réalisée dans le projet. D'ailleurs, c'est dans ce genre de fichiers que je m'aperçois que mes connaissances en fichiers makefile sont très limitées. De plus, avec un projet ayant plus de 100 fichiers différents, cela n'arrange pas les choses. En contrepartie, l'IDE offre la possibilité d'ajouter des flags.

    Je ne vois que deux options possibles :

    La première serait l'ajout d'une instruction dans la section "Other optimization flags" ou "Other flags"qui permettrait d'exclure certains fichiers de l'optimisation générale. Est-ce que ça existe ?

    La seconde serait une instruction préprocesseur à insérer dans les fichiers sources afin d'indiquer au compilateurs de ne pas optimiser une partie du code. Ce serait en quelque sorte un gros "volatile" étendu à plusieurs lignes de code ou à plusieurs fonctions. Est-ce que ça existe ?

  6. #6
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 429
    Points
    1 429
    Par défaut
    Salut!

    Dans le SDK pour Microblaze (inspiré de Eclipse), il est possible de paramétrer les options de compilation de chaque fichier, en faisant un clique droit (dans l'explorer de projet) sur chaque fichier.c, puis propriété etc...
    Après pour Atmel je ne sais pas.....

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 107
    Points : 189
    Points
    189
    Par défaut
    Bonjour,

    Merci mith06, je ne sais pas pourquoi je n'y avais pas pensé. Vivement les vacances !
    En effet, il suffit d'ouvrir les propriétés du fichier grâce à un clic droit puis "propriétés".
    Un nouveau panneau vient s'incruster et dans l'IDE. il suffit ensuite de déplier la section "Advanced" dans lequel se trouve :
    - Build Action : qui permet d'indiquer si le fichier en question est à compiler ou pas.
    - Costum Compilation Setting : qui permet de rajouter des flags pour la compilation.
    C'est dans ce dernier champ que l'on précise l'option de compilation souhaité (-O0 dans mon cas pour le fichier que je souhaite déboguer alors que j'utilise du -Os pour l'ensemble du projet). D'après le fichier Makefile généré, il ajoute le flag d'optimisation propre au fichier à la fin de la ligne appelant la compilation.
    Cette ligne se retrouve donc avec 2 flags d'optimisation différents, mais apparemment GCC ne prend en compte que le dernier.

    Petite précision pour ceux qui utilisent AVR Studio 5, un bogue très désagréable empêchait une compilation avec un niveau d'optimisation -O2 ( et -O1 ou -O3 je ne sais plus ).
    La dernière release corrige ce problème.

    @+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/05/2008, 07h18
  2. JTextField limité à certaines valeurs
    Par demonia dans le forum Composants
    Réponses: 5
    Dernier message: 21/12/2007, 19h01
  3. javadoc limité à certains packages et classes
    Par slyveuth dans le forum Maven
    Réponses: 4
    Dernier message: 30/08/2007, 10h06
  4. Réponses: 5
    Dernier message: 20/08/2006, 02h55
  5. Gcc options de compilations
    Par moon93 dans le forum Linux
    Réponses: 1
    Dernier message: 15/05/2006, 16h43

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