Segmentation Fault bei Klassenmember

Alles rund um die Programmierung mit Qt
Antworten
ireas
Beiträge: 13
Registriert: 24. Juni 2010 13:50

Segmentation Fault bei Klassenmember

Beitrag 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
ireas
Beiträge: 13
Registriert: 24. Juni 2010 13:50

Beitrag von ireas »

Komischerweise geht es auf einmal… :?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Für was gibt es eigentlich Debugger?
ireas
Beiträge: 13
Registriert: 24. Juni 2010 13:50

Beitrag von ireas »

Der Debugger sagt mir nichts als SEGFAULT.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
Antworten