Seite 1 von 1

Ausgabe des Variableninhalts in eclipse cdt?

Verfasst: 23. Januar 2009 19:15
von pfuscher
Hallo,

ich bin gerade dabei mich in die KDE / QT Entwicklung einzuarbeiten. Ich verwende dazu das Eclipse Cdt (Ganymede).
Wenn ich mein Programm (cmake basiert) debugge seh ich in der Variables Ansicht bei Qt Objekten wie z.b QString / QHash nie den Inhalt der Variablen sondern nur Adressen und nen Baum beim Ausklappen der Variable.
Meine Frage ist: Kann das die CDT? Oder brauch ich irgendwelche Zusatzmodule oder besondere Einstellungen im Debugger?
Ich hab im Netz mal ein bisschen gesucht und das hier gefunden:
http://websvn.kde.org/*checkout*/trunk/ ... -devel-gdb

Diese Makros funktionieren soweit beim Kommandozeilen gdb.
Kann ich diese Makros irgendwie in den Eclipse Debugger einbinden? Danke mal für eure Hilfe / Tipps.

Gruß Frank

PS: Benutze eine Linux Umgebung (Ubuntu 8.10)

Verfasst: 24. Januar 2009 21:21
von speed04
he, genau das gleiche problem habe ich unter windows xp. das debuggen funktioniert, es werden auch sämtliche informationen angezeigt, aber nicht das was in den variablen steht!

über hilfe und informationen wäre ich auch sehr froh!

thx

Verfasst: 29. Januar 2009 10:14
von qtNiko
hi, jetzt sind wir schon zu dritt :lol:
Ich arbeite mit Eclipse auf Linux und habe genau das gleiche Problem.
Der Debugger zeigt die ganze Objektstruktur des QString an, aber das, was in der Regel interessiert, nämlich den String selbst, nicht. Wenn man sich durch den Baum hangelt, findet man an diversen Stellen "data". Dort ist z.T. wenigsten das erste Zeichen des Strings zu finden, aber wo ist der Rest?
Vermutlich liegt der Grund für dieses gleiche Verhalten darin, dass letztendlich überall der GNU-Debugger eingesetzt wird, egal ob Linux oder Windows bzw. KDE oder Eclipse, und der kann es halt nicht.

Ich habe dieses Problem schon früher mal hier gepostet, aber keine Antwort erhalten. Hoffentlich erbarmt sich jetzt jemand :oops:

Verfasst: 29. Januar 2009 12:53
von androphinx
also ich arbeite seit einiger zeit mit qtcreator (www.qtsoftware.com) einer ide von den qt-entwicklern. in dieser ide erscheinen zumindest die normalen variablen, bei QString und anderen Qt-Variablen weiß ich es nicht.

Wenn es nicht funktioniert, müsst ihr ein bisschen die finger strecken und ein paar debugging-funktionen in euer programm zimmern. finde ich eigentlich sowieso besser, weil so könnt ihr ein programm später auch fernwarten...

Mfg androphinx

Verfasst: 29. Januar 2009 23:22
von qtNiko
Bei normalen Variablen funktioniert es auch im Eclipse-Debugger, aber leider nicht bei QString, C-strings dagegen schon.
Es hat etwas mit den Objekten zu tun. :cry:

Verfasst: 30. Januar 2009 20:56
von pfuscher
Hallo,

qtcreator unterstüzt (noch) nicht cmake basierte Projekte. Also fällt diese IDE mal raus

Debugging Ausgaben in den code bei Fehlersuche einzufügen finde ich als etwas sehr antiquitiert und vor allem auch ineffizient und zeitintensiv (mal nur die zeit zum neubauen immer eingerechnet). Code zur Laufzeit mal evaluieren geht ebensowenig. Wenn du mal in Qt debuggen willst um die Funktionsweise des Frameworks zu verstehen und dir dazu die Variablen angucken willst, viel spass mit dieser Methode.

Wenn du tatsächlich Debug Ausgaben zur Fernwartung verwenden willst:
Solche Ausgaben bremsen die Geschwindigkeit des Programmes durch das ständige loggen. Ich kenne auch wenig Entwickler die Logs ab ner bestimmten Größe (ein paar MB) lesen, bzw aufheben. Meist wird der Loglevel hochgesetzt (warn /error, wenn man z.b. commons logging verwendet) oder einfach die Datei gelöscht.

Für die anderen Leidgetragten im Thread: Es gibt Hoffnungen. Im Feature Plan von Galileo ist ein "Variable Detail formatter" eingeplant (siehe http://wiki.eclipse.org/CDT/planning/6.0#Debug). Die Ungeduldigen können ja mal versuchen den Patch zu installieren der auf der verlinkten Bug Nummer herunterladbar ist.
Gruß Frank
androphinx hat geschrieben:also ich arbeite seit einiger zeit mit qtcreator (www.qtsoftware.com) einer ide von den qt-entwicklern. in dieser ide erscheinen zumindest die normalen variablen, bei QString und anderen Qt-Variablen weiß ich es nicht.

Wenn es nicht funktioniert, müsst ihr ein bisschen die finger strecken und ein paar debugging-funktionen in euer programm zimmern. finde ich eigentlich sowieso besser, weil so könnt ihr ein programm später auch fernwarten...

Mfg androphinx

Verfasst: 31. Januar 2009 21:19
von speed04
also für mich nochmal zum mitschreiben: das bedeutet, dass das anzeigen bestimmter variablen z.b. qstring gar nicht möglich ist?

da müsste man sozusagen, jedesmal den qstring in ein anderes format bringen.

Ist das nicht eher ein gdb Problem?

Verfasst: 5. Februar 2009 11:30
von shaka
Hallo!

Ist das ganze nicht eher ein gdb-Problem? Der Debugger müßte ja in die Qt-Datentypen hineinschauen, um zu wissen, wo die interessanten Daten liegen. Das ist aber Qt-Implementierungssache, das weiß der Debugger zunächst natürlich nicht. Ich weiß, daß es für Qt 3.irgendwas mal Makros gab, um dem gdb sowas beizubringen, und soweit ich weiß, hat man in QtCreator (der auch den gdb benutzt) die Möglichkeit auch, d.h. es gibt wohl auch aktuelle Makros für die 4.x-Versionen. Aber wo im Netz sie rumliegen...???
Würd' mich auch interessieren!

Schöne Grüße
Shaka

Verfasst: 5. Februar 2009 18:25
von thereapman
evtl. mal bei Trolltech fragen *gg*

Verfasst: 5. Februar 2009 20:42
von Christian81