Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité régulier
    Inscrit en
    mars 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : mars 2011
    Messages : 18
    Points : 7
    Points
    7

    Par défaut Erreur de segmentation GTK

    Salut voilà plusieurs jours que je planche sur le pb
    Code :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    int main(int argc, char **argv)
    {
    	/* Variables */
    	GtkWidget *FenetrePrincipale = NULL;
    	GtkWidget *titreLabel;
    	GtkWidget *loginLabel;
    	GtkWidget *mdpLabel;
    	reponse *utilisateur;
    	GtkWidget *creercptBtn;
    	GtkWidget *validerBtn;
    	GtkWidget *loginEntry;
    	GtkWidget *mdpEntry;
    	GtkWidget *pVBox;
    	GtkWidget *pTable;
     
    	GtkWidget *menubar;
    	GtkWidget *filemenu;
    	GtkWidget *file;
    	GtkWidget *quit;
     
    	/* Initialisation de GTK+ */
    	gtk_init(&argc, &argv); 
     
    	/* Création de la fenêtre */
    	FenetrePrincipale = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    	gtk_window_set_position(GTK_WINDOW(FenetrePrincipale), GTK_WIN_POS_CENTER);
    	gtk_window_set_default_size(GTK_WINDOW(FenetrePrincipale), 400, 300);
    	g_signal_connect(G_OBJECT(FenetrePrincipale), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
     
    	pTable = gtk_table_new(5, 2, TRUE);
     
    	pVBox = gtk_vbox_new(FALSE, 0);
    	gtk_container_add(GTK_CONTAINER(FenetrePrincipale), GTK_WIDGET(pVBox));
     
    	menubar = gtk_menu_bar_new();
    	filemenu = gtk_menu_new();
     
    	file = gtk_menu_item_new_with_label("File");
    	quit = gtk_menu_item_new_with_label("Quit");
     
    	gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), filemenu);
    	gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), quit);
    	gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
    	gtk_box_pack_start(GTK_BOX(pVBox), menubar, TRUE, TRUE, 3);
    	gtk_box_pack_start(GTK_BOX(pVBox), pTable, TRUE, TRUE, 3);
     
    	titreLabel = gtk_label_new("Bienvenue");
    	gtk_label_set_justify(GTK_LABEL(titreLabel), GTK_JUSTIFY_CENTER); g_debug(G_STRLOC); 
    	loginLabel = gtk_label_new("Login : ");
    	//gtk_label_set_justify(GTK_LABEL(loginLabel), GTK_JUSTIFY_RIGHT);
    	utilisateur->loginEntry = gtk_entry_new();g_debug(G_STRLOC);
    	mdpLabel = gtk_label_new("Mot de passe : ");
    	//gtk_label_set_justify(GTK_LABEL(mdpLabel), GTK_JUSTIFY_RIGHT);
    	utilisateur->mdpEntry = gtk_entry_new_with_max_length(10);
    	gtk_entry_set_visibility(GTK_ENTRY(utilisateur->mdpEntry), FALSE);
    	gtk_entry_set_invisible_char(GTK_ENTRY(utilisateur->mdpEntry), '*');
    	validerBtn= gtk_button_new_with_label("Valider");
    	gtk_label_set_justify(GTK_LABEL(validerBtn), GTK_JUSTIFY_CENTER); g_debug(G_STRLOC);
    	creercptBtn= gtk_button_new_with_label("Creer un compte utilisateur");
    	gtk_label_set_justify(GTK_LABEL(creercptBtn), GTK_JUSTIFY_CENTER); g_debug(G_STRLOC);
     
    	gtk_table_attach(GTK_TABLE(pTable), titreLabel, 0, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 0);
    	gtk_table_attach_defaults(GTK_TABLE(pTable), loginLabel, 0, 1, 1, 2);
    	gtk_table_attach_defaults(GTK_TABLE(pTable), utilisateur->loginEntry, 1, 2, 1, 2);
    	gtk_table_attach_defaults(GTK_TABLE(pTable), mdpLabel, 0, 1, 2, 3);
    	gtk_table_attach_defaults(GTK_TABLE(pTable), utilisateur->mdpEntry, 1, 2, 2, 3);
    	gtk_table_attach(GTK_TABLE(pTable), validerBtn, 0, 2, 3, 4, GTK_EXPAND, GTK_EXPAND, 0, 0);
    	gtk_table_attach(GTK_TABLE(pTable), creercptBtn, 0, 2, 4, 5, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
    	g_signal_connect(G_OBJECT(validerBtn), "clicked", G_CALLBACK(OnValider), utilisateur);
    	g_signal_connect(G_OBJECT(creercptBtn), "clicked", G_CALLBACK(OnCreercpt), NULL);
     
     
    	gtk_widget_show_all(FenetrePrincipale);
    	gtk_main();g_debug (G_STRLOC);
     
    	return EXIT_SUCCESS;
    }
    Le code suivant s'exécute jusqu'à la ligne 48 après pour une raison que j'ignore "Erreur de segmentation".
    Quel est le problème ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 452
    Points : 13 911
    Points
    13 911

    Par défaut

    Tu ne vérifies pas si gtk_label_new() a réussi ou échoué. Tu considères que « titreLabel » est forcément valide, ce qui n'est pas le cas.

    Si tu travailles sous Linux avec GCC, essaie de compiler ton programme avec « gcc -g » puis de lancer l'exécutable produit avec gdb. En utilisant un débogueur, tu trouveras plus vite la cause de ton problème.

  3. #3
    Invité régulier
    Inscrit en
    mars 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : mars 2011
    Messages : 18
    Points : 7
    Points
    7

    Par défaut

    Mille merci ! C'était simple la variable utilisateur qui n'était pas allouée.

  4. #4
    Membre confirmé
    Avatar de fmdao
    Profil pro fmfcd
    Formateur en informatique
    Inscrit en
    novembre 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Nom : fmfcd
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : novembre 2010
    Messages : 90
    Points : 202
    Points
    202

    Par défaut

    ou Codeblock ...

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •