Seite 1 von 1

Segmentation Fault bei Klassenmember

Verfasst: 3. Dezember 2010 10:47
von ireas
Hi,

ich habe ein komisches Problem mit einer Membervariable. Rahmenbedinungen: MainWindow erbt von QMainWindow, MessageWidget von QWidget.

Die Klassendefinition von MainWindow beinhaltet:

Code: Alles auswählen

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);

// …

private:
// …
    QWidget* mainWidget;
    MessageWidget* m_messageWidget;

// …
    void createLayout();
};
createLayout wird aus dem Konstruktor aufgerufen und sieht wie folgt aus:

Code: Alles auswählen

void MainWindow::createLayout()
{
    mainWidget = new QWidget(this);
    QVBoxLayout* l = new QVBoxLayout();
    mainWidget->setLayout(l);
    setCentralWidget(mainWidget);

    QSplitter* splitter = new QSplitter(Qt::Vertical, mainWidget);
    l->addWidget(splitter);

    // …


    // DEBUG…
    MessageWidget* messageWidget = new MessageWidget();
    splitter->addWidget(messageWidget);
    // END DEBUG…
    m_messageWidget = new MessageWidget();
    splitter->addWidget(m_messageWidget);

    // 
}
Die Initialisierung von messageWidget ist problemlos, das Hinzufügen auch. m_messageWidget kann ich auch problemlos erstellen, in der nächsten Zeile erhalte ich jedoch einen SEGFAULT. Ersetze ich m_messageWidget durch eine lokale Variable, läuft das Programm ohne Probleme.

Ich habe ehrlich gesagt keine Ahnung, wo ich das Problem suchen soll… Hat jemand von euch eine Idee?

Grüße,
Robin

Verfasst: 3. Dezember 2010 12:06
von ireas
Komischerweise geht es auf einmal… :?

Verfasst: 3. Dezember 2010 12:17
von upsala
Für was gibt es eigentlich Debugger?

Verfasst: 3. Dezember 2010 13:58
von ireas
Der Debugger sagt mir nichts als SEGFAULT.

Verfasst: 3. Dezember 2010 14:06
von franzf
ireas hat geschrieben:Der Debugger sagt mir nichts als SEGFAULT.
Wenn es der gdb ist: gib mal bt ein, das gibt dir nen schönen BackTrace, womit du gut siehst WO der SegFault kommt. Mit debug-Symbolen bekommst du dogar überall noch Infos zu den Werten der Variablen. Aber eigentlich sollte das schön in der Doku des jeweiligen Debuggers zu finden sein.