ASSERT failure in QList<T>

Alles rund um die Programmierung mit Qt
Antworten
haldol
Beiträge: 19
Registriert: 18. April 2008 22:23

ASSERT failure in QList<T>

Beitrag von haldol »

hallo,

ich bin am lernen und komme mit einem übungsprogramm nicht mehr wirklich weiter.
das programm lässt sich übersetzen, bringt aber beim ausführen einen speicherzugriffsfehler.
mit 'CONFIG += debug' kompiliert erhalte ich folgende meldung:

Code: Alles auswählen

ASSERT failure in QList<T>::at: "index out of range", file /usr/include/qt4/QtCore/qlist.h, line 393
http://nopaste.debianforum.de/8002
ich habe versucht das programm mit einem debugger zu durchlaufen (gdb und kdbg), erhalte damit aber auch nicht mehr information als die obige zeile. der debugger (kdbg) zeigt dabei nur das durlaufen des quelltextes in 'main.cpp' an.
ich benutze debian sid mit qt 4.4 aus den repositories. libqt4-dbg habe ich installiert.

der beispiel-quelltext, zu dem verwendeten buch startet ebenfalls nicht korrekt, so das ich mich daran nicht richtig orientieren kann.
wenn mir jemand ein wenig auf die sprünge helfen könnte, wäre ich sehr dankbar.

grüße
michael
Zuletzt geändert von haldol am 14. Mai 2008 00:19, insgesamt 1-mal geändert.
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Wie die Meldung schon sagt, dürfte der Zugriffsindex den Du beim Zugriff auf ein Element der Liste gewählt hast, nicht innerhalb der Listengröße liegen. Also evtl. ist die Liste z.B. leer und du versuchst mit [1] auf ein Element zu zugreifen.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
haldol
Beiträge: 19
Registriert: 18. April 2008 22:23

Beitrag von haldol »

hallo nochmal,

erstmal vielen dank für deine hilfe. nachdem ich nun nochmal die entsprechenden stellen durchgegangen bin, hab ich den fehler gefunden.
in 'adressbookmodel.cpp' muss in 'AdressBookModel::rowCount'

Code: Alles auswählen

return adressBook.count() - 2;
// statt: return adressBook.count();
stehen, dann funktionierts.

ich bin noch etwas irritiert was das debugging angeht. warum springt der debugger beim durchlaufen des quelltextes nicht in die entsprechenden dateien bzw. dort in die richtige zeile?

naja erstmal soweit
michael
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Tut er ja, aber der Fehler wird eben erst in QList ausgelöst. Normalerweise musst Du dann nur den Callstack rückwärts laufen um genauere Details zu finden. Allerdings ist das mit gdb net ganz so intuitiv. Es sei denn Du hast eine IDE die dir das etwas vereinfacht.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

warum springt der debugger beim durchlaufen des quelltextes nicht in die entsprechenden dateien bzw. dort in die richtige zeile?
Da gab's letztens schon ein Thread:
http://www.qtforum.de/forum/viewtopic.php?t=6594
Antworten