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+ avec C & C++ Discussion :

J'ai besoin d'aide concernant un bug incompréhensible


Sujet :

GTK+ avec C & C++

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut
    Bon j'recrée pas un nouveau topic pour un problème identique :

    V'là que maintenant mes pointeurs se mettent à NULL tous seuls !!
    Et cette fois, l'erreur vient bien de mon code (et pas du code d'un collègue, comme la dernière fois. Cette fois j'ai bien vérifié qu'les bouts de programme qu'ils m'ont passé étaient corrects).

    Voilà les codes qui posent problème :
    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
    29
    30
    31
    32
    33
        in->frameu = gtk_frame_new("Liste des articles");
        in->defilef = gtk_scrolled_window_new(NULL,NULL);
        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(in->defilef), in->vboxf2);
     
     
        if(in->liste_articles != NULL)
            g_free(in->liste_articles);
        in->liste_articles = creer_liste_article();
        chaine = g_string_new(NULL);
        for(t=0; ((in->liste_articles)+t)->indice_article != -1; t++);
        tab = (GtkWidget**)malloc(t*sizeof(GtkWidget*));
     
        //On crée une liste des articles
        for(i=0; i<t; i++)
        {
            g_string_sprintf(chaine,"%s par %s, le %02d/%02d/%02d. ID : %06d", ((in->liste_articles)+i)->titre, ((in->liste_articles)+i)->auteur, ((in->liste_articles)+i)->date_creation[0], ((in->liste_articles)+i)->date_creation[1], ((in->liste_articles)+i)->date_creation[2], ((in->liste_articles)+i)->indice_article);
            *(tab+i)=gtk_event_box_new();
            lbl = gtk_label_new(NULL);
            gtk_label_set_label(GTK_LABEL(lbl), g_locale_to_utf8(chaine->str, -1, NULL, NULL, NULL));
            gtk_container_add(GTK_CONTAINER(*(tab+i)), lbl);
            gtk_widget_add_events(*(tab+i),GDK_BUTTON_PRESS_MASK);
            g_signal_connect(G_OBJECT(*(tab+i)), "button_press_event", G_CALLBACK(visualiser_article), data);
        }
        g_string_free(chaine,TRUE);
     
        for(i=0;i<t;i++)
        {
            gtk_box_pack_start(GTK_BOX(in->vboxf2), *(tab+i), TRUE, TRUE, 0);
        }
     
        gtk_container_add(GTK_CONTAINER(in->frameu), in->defilef);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(in->defilef),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
        gtk_frame_set_shadow_type(GTK_FRAME(in->frameu), GTK_SHADOW_IN);
    Lorsque je fais un test sur in->liste_articles dans la fonction visualiser_article, celui est à NULL !!!
    Et encore plus dingue, lorsque je fais appel à nouveau à visualiser_article (en cliquant à nouveau sur un event_box), je m'aperçois que la fenêtre de visualiser_article aussi a été mise à NULL !!
    Ça n'a aucun sens ! gdb me sort des seg fault de partout sans me donner d'indication précise sur mon code.
    Y a pas moyen déjà de savoir à quel moment et par quelle fonction mon pointeur in->liste_articles est modifié à la valeur NULL ? ça par-contre, ça m'aiderait bien...

    Merci d'avance

  2. #22
    Membre Expert
    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
    Par défaut
    Tu peux faire ça avec gdb avec les watchpoints (help watch)

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut
    J'ai essayé les watchpoint, mais je ne peux voir la valeur de in->liste_articles qu'aux breakpoints ou au moment où j'me bouffe le seg fault :-/

    Y a pas moyen pour que gdb m'avertisse dès que la variable est modifiée ?

    EDIT : la solution était toute bête... J'ai écrit le prototype de ma Callback comme je l'écrirais pour un GtkButton. Alors que quand il s'agit d'une EventBox, il faut ajouter le GtkEvent* en argument et renvoyer un gboolean...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. besoin d'aide concernant le cv
    Par bassem2008 dans le forum CV
    Réponses: 1
    Dernier message: 19/04/2008, 16h02
  2. Besoin d'aide concernant l'utilisation de thread
    Par romain69 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/03/2008, 17h21
  3. besoin d'aide concernant masterpage
    Par giannichedda dans le forum ASP.NET
    Réponses: 4
    Dernier message: 08/08/2007, 12h13
  4. Besoin d'aide concernant le diapo Flash.
    Par simplyme dans le forum Flash
    Réponses: 3
    Dernier message: 31/10/2006, 20h22
  5. Besoin d'aide concernant 1 exo
    Par Shakan972 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 29/11/2005, 11h31

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