QT im Debug Modus stürtzt mit einem ASSERT ab (QString) !?

Alles rund um die Programmierung mit Qt
Antworten
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

QT im Debug Modus stürtzt mit einem ASSERT ab (QString) !?

Beitrag von john »

Hallo Leute,

ich würde gerne mein Programm mit gdb debugen. Aber sobald ich die Debug-Version erstelle, dann stürtzt das Programm mit follgender Fehlermeldung ab:
ASSERT: "i >= 0 && i < size()" in file C:/Qt/4.1.0sh/include/QtCore/../../src/corelib/tools/qstring.h, line 541
Natürlich habe ich versucht den Fehler mit gdb nachzuvollziehen. Leider kann ich keinen logischen Fehler erkennen. Im Release-Modus klappt auch alles so wie es soll.

Ich verwende QT 4.1.0 und MinGw 5.0

Es ist nur ein einfaches zeichenweises kopieren eines Strings.
Hier mal der Code:

Code: Alles auswählen

int i;
QChar c;
QString temp, msg;

temp = "";
msg = "irgendwas";

for(i = 0; i < msg.length(); i++){
	c = msg.at(i);            
	temp += c;
}
ich habe diese Schleife im gdb durchlaufen. Es kommt zu diesen ASSERT, wenn das letzte Zeichen von msg gelesen wird (in diesem Falle beim 's'). Aber das kann doch nicht sein !? (das 'a' wird noch gelesen und in temp angefügt, aber beim 's' stürzt es mit der ASSERT-Meldung ab.

Was bedeutet dieser ASSERT in qstring.h? Und wieso nur im Debug-Modus?

Vielen Dank schonmal und viele Grüße
Ciao John
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Also bei mir passiert das nicht...
Allerdings sollte da wirklich kein assert kommen da QString::length() auf QString::size() zugreift, also i nie grösser als size() werden kann. Eventuell wird i aus Versehen verändert? Schau mal was i für Werte annimmt.

Einen QString würde ich trotzdem anders kopieren :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag von john »

Hallo Christian81,

vielen Dank für deine Antwort und für's ausprobieren. Inzwischen hat sich das Problem von selbst gelöst. Ich habe nichts am Code geändert, außer die Datei die mit "QTextStream instream(&datei)" in den QString "msg" eingelesen wurde. Vermutlich war da ein "unsichtbares Sonderzeichen" ...?
Einen QString würde ich trotzdem anders kopieren :D
Alles klar! :lol:

Gruß Ciao John
Antworten