हो सकता है कि यह बहुत देर हो चुकी है, लेकिन मुझे कम से कम उत्सुकता मिलती है कि निम्नलिखित कुछ पंक्तियां विभाजन की गलती का कारण बन रही हैं अगर केवल जीसीसी के अनुकूलन के साथ संकलित होने पर, "-ओ 1" भी!एक साधारण जीटीके + एप्लिकेशन में ऑप्टिमाइज़ेशन सक्षम करते समय सेगमेंटेशन गलती?
(gdb) backtrace
#0 0x00007ffff4d88052 in ??() from /lib/libc.so.6
#1 0x00007ffff5304112 in g_strdup() from /lib/libglib-2.0.so.0
#2 0x00007ffff5bc799d in ??() from /usr/lib/libgobject-2.0.so.0
#3 0x00007ffff5ba826c in g_object_new_valist()
from /usr/lib/libgobject-2.0.so.0
#4 0x00007ffff5ba84f1 in g_object_new() from /usr/lib/libgobject-2.0.so.0
#5 0x00007ffff78502d5 in gtk_button_new_from_stock()
from /usr/lib/libgtk-x11-2.0.so.0
#6 0x00007ffff787cc95 in gtk_dialog_add_button()
from /usr/lib/libgtk-x11-2.0.so.0
#7 0x00007ffff787cd60 in ??() from /usr/lib/libgtk-x11-2.0.so.0
#8 0x00007ffff787cf60 in gtk_dialog_new_with_buttons()
from /usr/lib/libgtk-x11-2.0.so.0
#9 0x0000000000402bb9 in show_settings_dialog() at settings.c:24
#10 0x0000000000403328 in main (argc=1, argv=0x7fffffffe2b8) at gatotray.c:286
... settings.c: 24 वास्तव में ऊपर सूचीबद्ध पहली पंक्ति, "gtk_dialog_new_with_buttons" दोषी है की तरह लगता है है ...
settings_dialog = gtk_dialog_new_with_buttons("gatotray Settings"
, NULL, 0, GTK_STOCK_CANCEL, FALSE, GTK_STOCK_SAVE, TRUE, 0);
g_signal_connect(G_OBJECT(settings_dialog), "response", G_CALLBACK(gtk_widget_destroy), NULL);
g_signal_connect(G_OBJECT(settings_dialog), "destroy", G_CALLBACK(settings_destroyed), NULL);
GtkWidget *vb = gtk_dialog_get_content_area(GTK_DIALOG(settings_dialog));
GtkWidget *hb = gtk_hbox_new(FALSE, 3);
gtk_container_add(GTK_CONTAINER(hb), gtk_label_new("Background:"));
GtkWidget *cb = gtk_color_button_new();
gtk_container_add(GTK_CONTAINER(hb), cb);
gtk_container_add(GTK_CONTAINER(vb), hb);
यह पश्व-अनुरेखन है संस्करण:
जीसीसी: 4.4.3
जीटीके +: 2.20.1
Btw, कि सह उल्लेख करना भूल गया के बाद कुछ पंक्तियों को mmenting 0 विरोधाभासी कॉल इसे होने से रोकता है। विशेष रूप से "gtk_container_add (GTK_CONTAINER (एचबी), सीबी) के साथ रेखा;"
मैंने जीटीकेटीप्स/जीटीके_MACROS के लगभग सभी उपयुक्त संयोजनों की कोशिश की, इससे कोई फर्क नहीं पड़ता।
क्या आप संकलित करते समय कोई चेतावनी प्राप्त करते हैं? – dreamlax
बेशक कोई चेतावनी नहीं! :-) "gcc -c' 'pkg-config --cflags gtk + -2.0'' -std = c99 -Wall -O1 -ggdb" -> – gatopeich
इस बीच, मैंने पाया कि परिवर्तनीय तर्क में अतिरिक्त 0 जोड़ना gtk_dialog_new_with_buttons() की सूची समस्या को हल करने लगती है, भले ही यह इसके दस्तावेज़ के अनुरूप न हो। अगर हम va_args, अनुकूलन, और/या इस विशिष्ट मुद्दे के बारे में अधिक आधिकारिक स्पष्टीकरण नहीं प्राप्त करते हैं, तो मैं इसका उत्तर दूंगा: -पी। – gatopeich