LINUX.ORG.RU

[macos][ненависть] как заставить gdb работать под макосью?

 ,


0

1

суть проблемы: в gtk3 и gtk2 под макосью не работает буфер обмена. в смысле вообще не работает - ни «копировать» ни «вставить»

собраны из сорцов atk-2.0.0, cairo-1.10.2, gdk-pixbuf-2.23.3, gettext-0.18.1.1, glib-2.29.4, gtk+-3.1.2, libffi-3.0.8, libpng-1.5.2, libxml2-2.6.30, pango-1.28.4, pixman-0.22.0, tiff-3.9.5, zlib-1.2.5 2, с --without-x --enable-quartz-backend

gtk2 поставлен через macports с +no_x11 +quartz

пример clipboard из gtk-demos либо матерится

(gtk3-demo:25622): Gdk-CRITICAL **: gdk_text_property_to_utf8_list_for_display: assertion `GDK_IS_DISPLAY (display)' failed
gtk3-demo(25622,0xa0493720) malloc: *** error for object 0x889f2: Non-aligned pointer being freed
*** set a breakpoint in malloc_error_break to debug
если копипастим мало памяти, или вылетает с bus error если копипастим картинку.

макось 10.5

поиску косяка в gtk мешает тот факт, что gdb не хочет отлаживать ничего собранного gcc с криками «неизвестный формат файла». вопрос: как заставить банально оккупированый gdb делать то же, что он умеет делать в нормальных операционных системах?

линукс здесь при том, что программа разрабатывается для линуксов, фряшек и прочих систем, где может крутиться gtk. но на работе стоит почему-то макось, и надо чтоб gtk работал и под ней, потому что на работе до фига свободного времени а он цука не работает

☆☆☆

>но на работе стоит почему-то макось

Снести её, т.к. недоОС.

anonymous
()

версии gtk

3.1.2 2.24.4

ckotinko ☆☆☆
() автор топика

Вроде на макосе есть специальный gdb с БДиШ?

tailgunner ★★★★★
()
Ответ на: комментарий от Gorthauer

мне нужно чтоб гдб работал у меня

$ demos/gtk-demo/gtk3-demo 

(process:48576): GLib-GObject-CRITICAL **: gtype.c:2708: You forgot to call g_type_init()

(gtk3-demo:48576): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `g_type_parent (interface_type) == G_TYPE_INTERFACE' failed

(gtk3-demo:48576): Gdk-CRITICAL **: gdk_text_property_to_utf8_list_for_display: assertion `GDK_IS_DISPLAY (display)' failed
gtk3-demo(48576,0xa0493720) malloc: *** error for object 0x889f2: Non-aligned pointer being freed
*** set a breakpoint in malloc_error_break to debug
Bus error
$ gdb demos/gtk-demo/gtk3-demo 
GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin"..."/Users/foo/Downloads/packages-gtk/gtk+-3.1.2/demos/gtk-demo/gtk3-demo": not in executable format: File format not recognized

(gdb) 
ckotinko ☆☆☆
() автор топика
Ответ на: комментарий от Gorthauer

gcc 4.0.1 gdb 6.3.50 родные для макоси.

gtk3 скачан с гномоорга и собран командами силы ./configure && make install gtk2 собран из макпортов

перед установкой gtk2 был еще установлен из макпортов gcc 4.4 но gtk3 собран старым gcc, он же вызывается командой gcc без пути.

в обоих гтках не подает признаков жизни буфер обмена

ckotinko ☆☆☆
() автор топика

И врядли заведешь, буфер обмена в гтк заведуют иксы, которые разумеется в маке отсутствуют, пиши на кьюте.

babusha
()
Ответ на: комментарий от babusha

что билд с x11 копипастит я и сам вижу, но ведь собирается же без иксов. что мне теперь, самому патч писать из-за того, что косолаперам было лень сделать копипасту?

ckotinko ☆☆☆
() автор топика
Ответ на: комментарий от babusha

быдлокодерство!!!!!

те кто портировали gtk на макось - полные ололо. они вообще не тестировали нифига.

gtk_clipboard_wait_for_contents возвращает selection_data с нулевым указателем на display, ну в падлу было заполнить. После чего его где-то в gtk_clipboard_wait_for_contents торжественно дереференсят, и наступает упячка. Отсюда та самая строчка

(gtk3-demo:25622): Gdk-CRITICAL **: gdk_text_property_to_utf8_list_for_display: assertion `GDK_IS_DISPLAY (display)' failed

пропатчил gtk_clipboard_wait_for_contents

      selection_data = g_slice_new0 (GtkSelectionData);
      selection_data->selection = clipboard->selection;
      selection_data->target = target;
			//FIX: set display!!!!!
			selection_data->display=clipboard->display;

...

   selection_data = _gtk_quartz_get_selection_data_from_pasteboard (clipboard->pasteboard,
								   target,
								   clipboard->selection);
	//FIX: set display!!!!!
	if(selection_data)selection_data->display=clipboard->display;

и копипаста текста завелась! теперь осталось поправить копипасту картинок, они ж гады где-то еще дереференсят нуль

ckotinko ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.