Seite 1 von 1
[gelöst] Absturz mit QList im VS 2008 Debug Mode
Verfasst: 21. September 2010 08:34
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
Verfasst: 21. September 2010 08:45
von Christian81
Für sowas gibt es einen Debugger... und ohne Code - naja.
Verfasst: 21. September 2010 09:25
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()
{
}
Verfasst: 23. September 2010 11:03
von stonecold
Hat jemand eine Idee?
Verfasst: 23. September 2010 13:11
von Christian81
Was sagt der Debugger? Wie viel wird schon ausgegeben usw?
Verfasst: 23. September 2010 13:56
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=???}
Verfasst: 26. September 2010 17:15
von Christian81
Und was denkst Du wie lange deine QList<QAction*> lebt die Du mit ui.menuMenu->actions() erzeugst?
Verfasst: 27. September 2010 07:45
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!