[gelöst] Absturz mit QList im VS 2008 Debug Mode

Alles rund um die Programmierung mit Qt
Antworten
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

[gelöst] Absturz mit QList im VS 2008 Debug Mode

Beitrag von stonecold »

Kürzlich habe ich mein Programm, welches auch eine QList benutzt im Visual Studio 2008 im Debug Modus kompiliert und aus der IDE heraus gestartet. Dabei kam es genau an der Stelle, an der ich auf die QList zugreife zu einem Absturz. Als Release kompiliert, funktioniert alles tadellos.

Hat jemand schon einmal ein ähliches Problem gehabt und konnte es lösen?

Danke und Gruß,
Mario
Zuletzt geändert von stonecold am 27. September 2010 07:46, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Für sowas gibt es einen Debugger... und ohne Code - naja.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Hätte ja sein können, dass es ein bekanntes Problem gibt!

VS2008 mit Qt AddIn [4.6.3] -> standard QMainWidget Projekt. Ins Widget habe ich im Designer ein Menu mit dem Namen "menuMenu" eingefügt

Code: Alles auswählen

#include "qlistbug.h"
#include <iostream>

QListBug::QListBug(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);
	ui.menuMenu->addAction("Eintrag 1");
	ui.menuMenu->addAction("Eintrag 2");
	ui.menuMenu->addAction("Eintrag 3");
	ui.menuMenu->addAction("Eintrag 4");

	QList<QAction *>::iterator menuIt = ui.menuMenu->actions().begin();
	for(menuIt; menuIt != ui.menuMenu->actions().end(); ++menuIt)
	{
		std::cout << qPrintable((*menuIt)->text()) << "\n";
	}
}

QListBug::~QListBug()
{

}
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Hat jemand eine Idee?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was sagt der Debugger? Wie viel wird schon ausgegeben usw?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Der Absturz passiert bei (*menuIt)->text(). Gleich beim ersten Aufruf.
Der Code ist im übrigen auch nur ein Beispiel. Der Fehler lässt sich also reproduzieren.

Aufrufliste:
QAction()::text() Z822
QAction()::d_func() Z67
qGetPtrHelper<QScopedPointer.... Z 2314 (in qglobal.h)
QScopePointe<QObjectData... (hier passiert der Fehler)

Unbehandelte Ausnahme bei 0x6506050a (QtGuid4.dll) in QListBug.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xfeeefef2.

Der Debugger zeigt mir Zeile 135 (return d; ) in qscopedpointer.h.
0xfeeefef2 {d=???}
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und was denkst Du wie lange deine QList<QAction*> lebt die Du mit ui.menuMenu->actions() erzeugst?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Hallo Christian,

danke für deinen Hinweis.
Hab es irgendwie nicht gesehen!

Code: Alles auswählen

QList<QAction *> myList = ui.menuMenu->actions();
QList<QAction *>::iterator menuIt = myList.begin();
for(menuIt; menuIt != myList.end(); ++menuIt)
{
	std::cout << qPrintable((*menuIt)->text()) << "\n";
}
So ist besser!
Antworten