QT Debuggen: Variablen überwachen

Verschiedenes zu Qt
Antworten
hm
Beiträge: 9
Registriert: 18. August 2008 14:55

QT Debuggen: Variablen überwachen

Beitrag von hm »

Hallo,
ich versuche mich gerade in QT 4.4 OpenSource Variante unter Windows mit MinGW und der mod Mingw-gdb Version einzuarbeiten.

Soweit so gut. Ich kann erste Programme comp. & debuggen, habe aber ein Problem beim debuggen von QT-Anwendungen. Als Frontend benutze zurzeit Eclipse mit dem QTPlugin, unter edyuk ist es aber das gleiche. gdb per Kommandozeile habe ich aus Unkenntnis nicht probiert.

Wenn ich nun mein Programm per Haltepunkt stoppe, möchte ich mir oft den Inhalt bestimmter (lokaler) Variablen/Eigenschaften, z.B. von QString, anzeigen lassen. Leider bekomme ich immer nur eine nicht aussagekräfte Baumstruktur zu Gesicht? Ich meine mich zu erinnern, das ich unter KDE/KDevelop schon gesehen habe, dass der Debugger QT-Objekte in Klartext auflösen kann.

Hat jemand ne Ahnung was ich falsch mache, bzw. was mir fehlt?

grüße hm
hm
Beiträge: 9
Registriert: 18. August 2008 14:55

Nachtrag

Beitrag von hm »

Hallo,
es würde mir ja schon helfen, wenn ich wüste ob das ein typ. Problem ist oder es an mir liegt! Also bitte mal Antworten, ob jemand anderes das Problem auch hat, bzw. mal schreiben das bei ihm alles geht.

btw. ich habe inzwischen qdevelop ausprobiert. Qdevelop kann einen QString richtig beobachten! Leider wird aber von Qdevelop/ctags das qt-verzeichnis nicht indiziert, sodass die die code completion nicht vernünftig funktioniert..... :(

hm
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Hallo, ich muss mich da anschließen, ich habe genau das selbe Problem und weiß da auch nicht richtig weiter. So was macht das Debuggen recht schwierig. Würde mich auch freuen, wenn da jemand ein paar Tipps hat.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Also beim VS hangel ich mich bei den QTObjecten auch durch die baumstruktur bis ich auf den datenpointer komme .... der iss ja nen dynamischer 16bittiger string, und den kann der debugger von VS aufloesen.

geht das bei euch ned .... ?

direkt ne anzeige bei QString, das der wert drinne steht hab ich auch ned ...

Ciao ....
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Bei mir nicht... wobei das etwas schwer zu sagen ist, da das bei mir zig tausend mal verschachtelt ist und nach 100 Klicks verlierst du den Überblick.

Das ist eine Zumutung... Falls das Eclipse bei mir anzeigen würde und ich das nur nicht finde, ist das nicht vertretbar... Da bin ich schneller wenn ich von Hand debugge und immer ein qDebug() in meinen Code einfüge, jedoch ist das keine gute alternative...

// EDIT hier ist mal ein Screenshot:
Bild

Und hier mal noch der Code dessen Inhalt ich gerne einsehen würde:

Code: Alles auswählen

typedef struct {
		QString label;
		QString suite;
		int winSystem;
		int unixSystem;
		QString description;
		QString url;
		bool authentication;
		QString username;
		QString password;
	}SRepository;

	static QList<SRepository*> repositoryList;
hm
Beiträge: 9
Registriert: 18. August 2008 14:55

Ein noch nicht ganz befriedingender Workaround()

Beitrag von hm »

Hallo,
ich bin ein stückchen weiter bei meinem Problem. Ich kann als Watch auch eine funktion eingeben, so z.B.

Code: Alles auswählen

QString strTest = "Blablabla";
dann beobachte ich im Debugger:

Code: Alles auswählen

 strTest.size() 
und bekomme dann in der Anzeige ein int mit der richtigen Anzahl.

Leider funktioniert das nicht bei

Code: Alles auswählen

 strTest.toStdString() 

welches mit ein char* zurückgeben sollte

Es funktioniert aber wiederum

Code: Alles auswählen

 strTest.toLatin() 

Jetzt habe ich ein QByteArray. Im QBytearray sehe ich in der Baumstruktur meinen String. Kann ihn aber immer noch nicht isolieren?
Ich probiers weiter..., evtl. hat ja jemand ne Lösung wie ich direkt im debugger drauf zugreifen kann

gruesse hm
Antworten