Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [wx] проблема запуска под линуксом


Автор: bilbobagginz 15.3.2008, 00:32
привет.
есть wxWidgets 2.8.6, под нее есть програмка.
собирается на ура на:
  • Макинтош
  • Виндовс
  • Линух, GTK2
решил проверить работает ли она под линью. собралась.
Запускаю:
Код

user@hostname:~/wxApp/linux-gtk2$ ./wxApp
Segmentation fault

дебажу, вижу, что проблема в том, что 
функция получает эту ошибку вот тут:
Код

(gdb) step
WxMyApp::OnInit (this=0x833c098) at wxmyapp.cpp:98
98              );
(gdb) next

Program received signal SIGSEGV, Segmentation fault.
0x080c8d4e in wxWindow::SetBackgroundStyle (this=0x835f2e8,
    style=wxBG_STYLE_CUSTOM) at ../src/gtk/window.cpp:3950
3950                window = GetConnectWidget()->window;
(gdb)

ставим breakpoint на  ../src/gtk/window.cpp:3950. перезапускаем:
Код

(gdb) break ../src/gtk/window.cpp:3950
Breakpoint 2 at 0x80c8d3a: file ../src/gtk/window.cpp, line 3950.
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) ye

Starting program: /home/user/work/wxMyApp/wxMyApp/linux-gtk2d/wxMyApp
Failed to read a valid object file image from memory.
[Thread debugging using libthread_db enabled]
[New Thread -1219520832 (LWP 5166)]
[Switching to Thread -1219520832 (LWP 5166)]

Breakpoint 1, main (argc=1, argv=0xbff1eff4) at wxmyapp.cpp:47
47      IMPLEMENT_APP( WxMyApp )
(gdb) continue
Continuing.

Breakpoint 2, wxWindow::SetBackgroundStyle (this=0x835f2e8,
    style=wxBG_STYLE_CUSTOM) at ../src/gtk/window.cpp:3950
3950                window = GetConnectWidget()->window;
(gdb) step
wxWindow::GetConnectWidget (this=0x835f2e8) at ../src/gtk/window.cpp:3998
3998        GtkWidget *connect_widget = m_widget;
(gdb) p m_widget
$1 = (GtkWidget *) 0x0
(gdb)


идеи ?


Автор: Любитель 16.3.2008, 13:28
А сорсы приложения можно посмотреть?

Архитектуру wxWidgets особо не знаю, но навскидку проверил бы - создаётся ли этот m_widget. По идее где-то тут:
Код

bool wxWindowGTK::Create( wxWindow *parent,
                          wxWindowID id,
                          const wxPoint &pos,
                          const wxSize &size,
                          long style,
                          const wxString &name  )
{
    if (!PreCreation( parent, pos, size ) ||
        !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
    {
        wxFAIL_MSG( wxT("wxWindowGTK creation failed") );
        return false;
    }

    m_insertCallback = wxInsertChildInWindow;

    m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );


Конкретно строку (номер) не скажу ибо wx-вский gtk/window.cpp с именно твоей нумерацией не нашёл smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)