Seite 1 von 1

Debug für Anfänger

Verfasst: 8. Dezember 2011 17:54
von JohnR
Hi

Ich bin leider noch nicht wirklich vertraut in QT und habe eine Frage zum debug.

Ich habe ein Programm welches Listen zusammenträgt, zum Teil auch downloaded und dann aufbereitet.

Primär setze ich bei der Geschichte QStringLists ein.

Mein Problem ist das irgendwo in der Anwendung ab und an eine QStringList noch nicht fertig zu sein scheint und beim Schreiben des Reports geht die Sache hoch ^^

aber halt nur manchmal................

Dieses Problem krieg ich natürlich in den Griff in dem ich das Programm scheibchenweise auseinandernehme und schaue wo der Fehler auftritt (so alle 10 Versuche machts einmal bumm).

Meine Kernfrage ist wie nutze ich die Debugfunktion um die Stelle wo das Programm hochgeht zu lokalsieren ?

Wenn ich die List sizes per qdebug() << bsp; ausgeben will funktioniert das leider nicht, bzw. die Größe der list wird nicht angezeigt in dem Fall das die Sache platzt, funktioniert das Programm stimmen ach die Listsizes, das ist allerdins auch logisch und nützt mir ja so nix :D.

Gruß und Danke schonmal für die Antwort auf die in eueren Augen sicher recht simple Frage

John

Re: Debug für Anfänger

Verfasst: 8. Dezember 2011 18:37
von Marcus Breuer
Hi John,

bin selbst auch alles andere als erfahrem mit Qt. Aber habe schon soviel Hilfe hier bekommen und es wird Zeit, dass ich mal was zurückgebe:)

Ich verstehe dein Problem nicht ganz, erkläre Dir aber kurz, wie ich qDebug() <<...; benutze.

Also klar ist: #include <QDebug> Schau auch mal in der Referenz, da ist ganz gut beschrieben, was Du ausgeben lassen kannst.

Also wenn Du, so habe ich es jetzt vertanden, die Listenelemente ausgeben lassen willst, dann probier Folgendes:

for(int i=0; i<BspListe.size(); i++) qDebug() << BspListe.at(i); So oder zumindest so ähnlich.

Ansonsten, wenn Du die Größe der Liste wissen möchtest: qDebug() << BspListe.size();

Wenn Du das Programm startest öffnet sich unter dem Feld mit dem Quellcode ein weiteres. Und da drunter kanst Du mit dem Button "Ausgabe der Anwendung" dann auch sehen, was Dir qDebug ausgeworfen hat.

Hoffe, ich habe nicht dran vorbeigeredet. Beste Grüße,
Marcus

Re: Debug für Anfänger

Verfasst: 8. Dezember 2011 19:24
von JohnR
Danke für die Antwort

Das mit dem qDebug() << BspListe.size(); mache ich ja bereits, und solange wie das Programm normal ausgeführt wird trudeln im Fenster unten auch die Größen der Listen richtig ein.

Wenn die ganze Sache aber "hochgeht" kommt im Fenster unten nur die Meldung "index out of range" von QList.h wenn ich es richtig im Kopf habe, es läßt sich aber aus der Meldung nicht reproduzieren welche Liste den "Range" verlassen hat und ich dachte es gibt eine einfache Möglichkeit den Punkt zu ermitteln wo die ganze Sache "platzt".

Beim Programmfehler erscheinen halt auch die Größenangaben der Listen per Qdebug nicht in dem Fenster die kommen nur bei korrekter Ausführung des Programms dann stimmen sie allerdings auch (was an sich ja logisch ist).

Wenn da nix gibt mache ich es halt Scheibchenweise und kommentiere die Funktionen so lange aus bis ich die die den Fehler ab und an macht gefunden habe.

Ich dachte halt das es da irgendwo eine Funktion gibt die mir hilft zu bestimmen wo die "Buggy" Funktion ist.

qDebug() << BspListe.size(); wäre ja eigentlich das was ich bräuchte, aber wenn es beim hochgehen des Programms keine Ausgabe gibt nützt mir das ganze halt auch nix O.o

Gruß John

Re: Debug für Anfänger

Verfasst: 9. Dezember 2011 06:07
von Christian81
Dafür gibt es einen Debugger. Das weiteren hat QList (bzw. QStringlist) auch eine Funktion size() mit der man schauen kann ob die aktuelle Laufvariable nicht doch zu groß wird.