Ausgabe des Variableninhalts in eclipse cdt?

Verschiedenes zu Qt
Antworten
pfuscher
Beiträge: 3
Registriert: 19. Januar 2009 20:20

Ausgabe des Variableninhalts in eclipse cdt?

Beitrag 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)
speed04
Beiträge: 39
Registriert: 7. November 2008 15:24

Beitrag 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
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag 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:
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag 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
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag 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:
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
pfuscher
Beiträge: 3
Registriert: 19. Januar 2009 20:20

Beitrag 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
speed04
Beiträge: 39
Registriert: 7. November 2008 15:24

Beitrag 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.
shaka
Beiträge: 27
Registriert: 8. November 2006 10:36
Wohnort: München

Ist das nicht eher ein gdb Problem?

Beitrag 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
thereapman
Beiträge: 36
Registriert: 6. Juni 2007 15:39

Beitrag von thereapman »

evtl. mal bei Trolltech fragen *gg*
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten