Seite 1 von 1

QT 3.3.8 und QT 4.3.4 parallel -> Debug Problem. [gelöst]

Verfasst: 28. März 2008 09:32
von tie123
Hallo.
Ich benutze Visual Studio 2003 und habe Langezeit nur mit QT 3 gearbeitet.
Integration ist gut. Debug war ohne Probleme Möglich.

Einen Qstring konnte ich am Haltepunkt mit dem Mauszeiger "berühren" und der Werte Inhalt wurde angezeigt.
Weiterhin war es ohne Probleme Möglich einen QString zu überwachen. Der Wert wurde korekt angezeigt.

Nun habe ich parallel QT 4.3.4 installiert und die qt-vsaddin-collection-2.1.4 installiert.

In meinen Projekten kann ich nun zwischen QT3 und QT4 wechslen.
Soweit super.

Aber ich habe Probleme den QString nun im Debug Mode auszulesen.

QString test;
test = "hallo welt";

Gehe ich nun mit dem Mauszeiger auf test oder Überwache ich die Variable kommt:

test = {??? size=???} // früher test ={"hallo welt" size=10}

a(uch über qstring.d.ascii oder qstringd.unicode kommt nur Mist.)

Wie kann ich wieder den QString debugen. Oder muss ich QT4 wieder runterschmeissen.

Bei gross Programmen und Fehleranalyse kann ich es mir nicht leisten überall den QString erst nem char zuzuordnen.

M.f.G: Tie123

Verfasst: 28. März 2008 09:41
von PeterLustig
Das hat nichts mit Qt4 zu tun. Ich weiß nicht ob es bei 2003 so anders ist, aber bei 2008 kann ich ohne Probleme mit den Mauszeiger rüberfahren, test "aufklappen", d "aufklappen" und ich seh den Inhalt bei data oder array.

Eine Klasse zu überprüfen (besonders solch eine 'Komplexe') ist nunmal etwas anders als nur einen Datentyp zu überprüfen.


Alternativ kannst du auch einfach einen Watch setzen, z. B.:
test.d->data
oder
test.d->array

Verfasst: 28. März 2008 09:55
von Christian81
Diese infos sind in der autoexp.dat gespeichert. Da QString als Name in Qt3 und Qt4 gleich sind, muss sich VS für eins entscheiden. Ist dann wohl die Darstellungsform für Qt4...

Verfasst: 28. März 2008 12:01
von tie123
An Herrn Lustig .......
Christian81 hat geschrieben:Diese infos sind in der autoexp.dat gespeichert. Da QString als Name in Qt3 und Qt4 gleich sind, muss sich VS für eins entscheiden. Ist dann wohl die Darstellungsform für Qt4...
Super genau das was ich gesucht hatte. Herzlichen Dank.

In der autoexp.dat den QT Block von:

Code: Alles auswählen

...
..
.
QString=<d->data,su> size=<d->size,u>
QByteArray=<d->data,s> size=<d->size,u>
QUrl =<d->encodedOriginal.d->data,s>
QUrlInfo =<d->name.d->data,su>
QPoint =x=<xp> y=<yp>
QPointF =x=<xp> y=<yp>
QRect =x1=<x1> y1=<y1> x2=<x2> y2=<y2>
QRectF =x=<xp> y=<yp> w=<w> h=<h>
QSize =width=<wd> height=<ht>
QSizeF =width=<wd> height=<ht>
QMap<*> =size=<d->size>
QVector<*> =size=<d->size>
QHash<*> =size=<d->size>
QVarLengthArray<*> =size=<s> data=<ptr>
QFont =family=<d->request.family.d->data,su> size=<d->request.pointSize, f>
QDomNode =name=<impl->name.d->data,su> value=<impl->value.d->data,su>
..
..
..
in

Code: Alles auswählen

...
..
.
;QT4
;QString=<d->data,su> size=<d->size,u>
;QByteArray=<d->data,s> size=<d->size,u>
;QUrl =<d->encodedOriginal.d->data,s>
;QUrlInfo =<d->name.d->data,su>
;QPoint =x=<xp> y=<yp>
;QPointF =x=<xp> y=<yp>
;QRect =x1=<x1> y1=<y1> x2=<x2> y2=<y2>
;QRectF =x=<xp> y=<yp> w=<w> h=<h>
;QSize =width=<wd> height=<ht>
;QSizeF =width=<wd> height=<ht>
;QMap<*> =size=<d->size>
;QVector<*> =size=<d->size>
;QHash<*> =size=<d->size>
;QVarLengthArray<*> =size=<s> data=<ptr>
;QFont =family=<d->request.family.d->data,su> size=<d->request.pointSize, f>
;QDomNode =name=<impl->name.d->data,su> value=<impl->value.d->data,su>

;QT3
QString=<d->unicode,su> len=<d->len,u>
QCString =<shd->data, s>
QPoint =x=<xp> y=<yp>
QRect =x1=<x1> y1=<y1> x2=<x2> y2=<y2>
QSize =width=<wd> height=<ht>
QWMatrix =m11=<_m11> m12=<_m12> m21=<_m21> m22=<_m22> dx=<_dx> dy=<_dy>
QVariant =Type=<d->typ> value=<d->value>
QValueList<*> =Count=<sh->nodes>
QPtrList<*> =Count=<numNodes>
QGuardedPtr<*> =ptr=<priv->obj>
QEvent =type=<t>
QObject =class=<metaObj->classname,s> name=<objname,s>

...
..
.
geändert und schon läufts wieder.

Jetzt muss ich nur noch nen script schreiben, das mir je nach QT Version den passenden Block aktiviert.