Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Bibliothèques, systèmes et outils
Bibliothèques, systèmes et outils Forum d'entraide sur les bibliothèques, la programmation système et les outils en C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/02/2012, 23h27   #1
PrincessGirl
Invité régulier
 
Inscription : 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 ?
PrincessGirl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2012, 02h03   #2
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 614
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : septembre 2007
Messages : 4 614
Points : 11 079
Points : 11 079
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.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/02/2012, 02h54   #3
PrincessGirl
Invité régulier
 
Inscription : mars 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 18
Points : 7
Points : 7
Mille merci ! C'était simple la variable utilisateur qui n'était pas allouée.
PrincessGirl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2012, 08h28   #4
fmdao
Membre actif
 
Avatar de fmdao
 
Inscription : novembre 2010
Messages : 86
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 86
Points : 162
Points : 162
ou Codeblock ...
fmdao est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h37.


 
 
 
 
Partenaires

Hébergement Web