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

GTK+ Discussion :

[GTK] Debug & Release, pas le même comportement


Sujet :

GTK+

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Points : 133
    Points
    133
    Par défaut [GTK] Debug & Release, pas le même comportement
    Bonjour à tous. Je suis confronté a un soucis peu commun.
    Je suis actuellement en train de développer une application solitaire pour un projet de mon école, en GTK.

    Tout se passe bien SAUF quand j'ose utiliser le "release" mode pour compiler mon application.
    Quand je suis en mode débug, tout marche nickel, j'appelle une fonction de résolution automatique de mon solitaire avec un g_timeout_add, et tout est nickel.
    Quand je suis en mode release, cependant, quand je lance ma résolution automatique, une erreur de segmentation réapparait en permanence.

    Serait-ce une mauvaise configuration de mes paramètres ? Pourquoi le mode debug marche sans probleme et non le mode release ?

    Merci d'avance,

    Pims.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 293
    Points : 4 943
    Points
    4 943
    Billets dans le blog
    5
    Par défaut
    En règle générale la différence entre le mode Debug et Release se situe dans les paramètres de compilation. Regardes déjà la différence entre les deux.

    Maintenant un segdefault correspond plutôt à une mauvaise manipulation de pointeur. Avec un débogueur se serait plus simple pour toi de trouver l'origine du mal.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Points : 133
    Points
    133
    Par défaut
    Merci de ta réponse rapide.

    J'ai déja regardé dans les options de compilation ( Projects->Build options) de mon IDE ( codeblocks), je n'ai noté aucune différence, a part le "produce debugging symbols". Il ne me semble pas que ce soit cela qui puisse tout changer (n'hésite pas a me le dire si je me fourvoie )

    D'autre part, quand tu parle d'un débogueur, tu parle d'un débogueur externe a mon IDE ? J'ai l'habitude de rêgler mes segfault avec le mode débug de CodeBlocks, mais quand je lance le débogueur de codeblocks en "mode release" ( Je ne comprend pas bien d'ailleurs comment marchent les deux modes, le débogueur en mode release ne me permet par exemple pas de m'arreter sur un breakpoint, mais m'affiche la callstack quand j'ai ma segfault.)
    Voila la callstack de l'erreur quand je suis en "mode release"... autant dire que ca m'avance pas trop
    http://i55.tinypic.com/2ir11zp.jpg

    Et quand je me met en "mode" release je n'ai de toute facon pas l'erreur segfault, donc je ne peux pas déboguer correctement mon appli.

    Peut etre parlais-tu d'un débogueur externe a CodeBlocks, et dans ce cas la lequel me conseillerais tu ?

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 293
    Points : 4 943
    Points
    4 943
    Billets dans le blog
    5
    Par défaut
    Effectivement pas de réponse probante côté debug. Le débogueur le plus connu est gdb. Maintenant comme apparement tu codes sous Windows je ne te serais pas d'un grand secours. Je programme avec le pingouin alors...

    Si tu utilises gcc comme compilateur il faut de toute façon le paramètre "-g" pour obtenir les informations de débogage. Que ce soit d'ailleurs en mode Debug ou Release. Ensuite il y a l'option "-O" suivi d'un chiffre qui optimise le code compilé. Parfois le niveau d'optimisation engendre des erreurs de code. A supprimer pour voir.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Effectivement pas de réponse probante côté debug. Le débogueur le plus connu est gdb. Maintenant comme apparement tu codes sous Windows je ne te serais pas d'un grand secours. Je programme avec le pingouin alors...

    Si tu utilises gcc comme compilateur il faut de toute façon le paramètre "-g" pour obtenir les informations de débogage. Que ce soit d'ailleurs en mode Debug ou Release. Ensuite il y a l'option "-O" suivi d'un chiffre qui optimise le code compilé. Parfois le niveau d'optimisation engendre des erreurs de code. A supprimer pour voir.

    J'utilise effectivement déja gdb. Et tu viens de me sauver la vie . C'est effectivement l'option d'optimisation de code qui me faisait planter mon appli...
    Un énorme merci...

    Pour ma culture perso, le -Ox change quoi exactement dans la compilation ? Il transforme mon code en un code de plus bas niveau que si j'ai une option en -O(x-1) ?

    Enfin bref, vraiment, merci beaucoup !

    Petit edit :Quand j'essaye d'executer mon executable directement depuis le dossier (debug/release) il me fait comprendre que j'ai pas libglib-2.0 dans mon ordinateur. C'est une option de compilation, ou il faut que je mette libglib-2.0 directement dans le dossier release/debug ?

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 293
    Points : 4 943
    Points
    4 943
    Billets dans le blog
    5
    Par défaut
    Autre sujet que celui des dll nécessaires sous Windows. Je ne peux rien pour toi directement mais fais une recherche sur ce forum, c'est un problème récurrent. L'application fonctionne sous l'IDE mais pas en distribution.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Points : 133
    Points
    133
    Par défaut
    Pas de soucis, merci pour tout, tu es un chef

  8. #8
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 293
    Points : 4 943
    Points
    4 943
    Billets dans le blog
    5
    Par défaut
    De rien

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    A mon avis tu as un bug dans ton code (probablement lié à la gestion mémoire) en mode release et en mode debug. Quand tu compiles en mode debug, tu as de la chance et le bug n'a pas de conséquences désastreuses, mais en mode release le bug se manifeste de façon plus visible en crashant ton programme.

  10. #10
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    A mon avis tu as un bug dans ton code (probablement lié à la gestion mémoire) en mode release et en mode debug. Quand tu compiles en mode debug, tu as de la chance et le bug n'a pas de conséquences désastreuses, mais en mode release le bug se manifeste de façon plus visible en crashant ton programme.
    Je penche aussi pour ça... ça peut être un prototype de callback mal formé qui peut corrompre la pile au moment de restaurer le contexte en sortie de callback.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

Discussions similaires

  1. Debug ou release : pas la même taille ?! Code::Blocks
    Par Glân von Brylân dans le forum Débuter
    Réponses: 4
    Dernier message: 09/06/2014, 21h26
  2. Toad 9.5 CAST (F5/F9) pas le même comportement
    Par CUCARACHA dans le forum Débuter
    Réponses: 2
    Dernier message: 17/05/2010, 16h10
  3. Pas le même comportement depuis et hors de Visual
    Par Dmnbp7ip dans le forum Visual C++
    Réponses: 4
    Dernier message: 12/11/2008, 14h37
  4. Réponses: 1
    Dernier message: 15/01/2008, 13h38
  5. [BoxLayout] pas le même comportement linux/window?
    Par Lady dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 10/05/2007, 14h32

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