Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
206adf2d
Commit
206adf2d
authored
Jul 09, 2009
by
hjk
Browse files
debugger: work on dumper auto tests
parent
e8badc71
Changes
2
Hide whitespace changes
Inline
Side-by-side
share/qtcreator/gdbmacros/gdbmacros.cpp
View file @
206adf2d
...
...
@@ -1992,39 +1992,21 @@ static void qDumpQObject(QDumper &d)
// using 'addr' does not work in gdb as 'exp' is recreated as
// (type *)addr, and here we have different 'types':
// QObject vs QObjectPropertyList!
#ifdef Q_CC_MSVC
d
.
putItem
(
"addr"
,
d
.
data
);
#else
d
.
beginItem
(
"exp"
);
d
.
put
(
"*(class "
NSX
"QObject"
NSY
"*)"
).
put
(
d
.
data
);
d
.
endItem
();
#endif
d
.
putItem
(
"type"
,
NS
"QObjectPropertyList"
);
d
.
putItemCount
(
"value"
,
mo
->
propertyCount
());
d
.
putItem
(
"numchild"
,
mo
->
propertyCount
());
d
.
endHash
();
d
.
beginHash
();
d
.
putItem
(
"name"
,
"signals"
);
#ifdef Q_CC_MSVC
d
.
putItem
(
"addr"
,
d
.
data
);
#else
d
.
beginItem
(
"exp"
);
d
.
put
(
"*(class "
NSX
"QObject"
NSY
"*)"
).
put
(
d
.
data
);
d
.
endItem
();
#endif
d
.
putItem
(
"type"
,
NS
"QObjectSignalList"
);
d
.
putItemCount
(
"value"
,
signalCount
);
d
.
putItem
(
"numchild"
,
signalCount
);
d
.
endHash
();
d
.
beginHash
();
d
.
putItem
(
"name"
,
"slots"
);
#ifdef Q_CC_MSVC
d
.
putItem
(
"addr"
,
d
.
data
);
#else
d
.
beginItem
(
"exp"
);
d
.
put
(
"*(class "
NSX
"QObject"
NSY
"*)"
).
put
(
d
.
data
);
d
.
endItem
();
#endif
d
.
putItem
(
"type"
,
NS
"QObjectSlotList"
);
d
.
putItemCount
(
"value"
,
slotCount
);
d
.
putItem
(
"numchild"
,
slotCount
);
...
...
@@ -2033,13 +2015,7 @@ static void qDumpQObject(QDumper &d)
if
(
!
objectChildren
.
empty
())
{
d
.
beginHash
();
d
.
putItem
(
"name"
,
"children"
);
#ifdef Q_CC_MSVC
d
.
putItem
(
"addr"
,
d
.
data
);
#else
d
.
beginItem
(
"exp"
);
d
.
put
(
"*(class "
NSX
"QObject"
NSY
"*)"
).
put
(
d
.
data
);
d
.
endItem
();
#endif
d
.
putItem
(
"type"
,
NS
"QObjectChildList"
);
d
.
putItemCount
(
"value"
,
objectChildren
.
size
());
d
.
putItem
(
"numchild"
,
objectChildren
.
size
());
...
...
@@ -2052,7 +2028,7 @@ static void qDumpQObject(QDumper &d)
#if 1
d
.
beginHash
();
d
.
putItem
(
"name"
,
"className"
);
d
.
putItem
(
"value"
,
ob
->
metaObject
()
->
className
());
d
.
putItem
(
"value"
,
ob
->
metaObject
()
->
className
());
d
.
putItem
(
"type"
,
""
);
d
.
putItem
(
"numchild"
,
"0"
);
d
.
endHash
();
...
...
@@ -2131,13 +2107,16 @@ static void qDumpQVariantHelper(const QVariant *v, QString *value,
break
;
case
QVariant
::
Size
:
{
const
QSize
size
=
v
->
toSize
();
*
value
=
QString
::
fromLatin1
(
"%1x%2"
).
arg
(
size
.
width
()).
arg
(
size
.
height
());
*
value
=
QString
::
fromLatin1
(
"%1x%2"
)
.
arg
(
size
.
width
()).
arg
(
size
.
height
());
}
*
numchild
=
0
;
break
;
case
QVariant
::
Rect
:
{
const
QRect
rect
=
v
->
toRect
();
*
value
=
QString
::
fromLatin1
(
"%1x%2+%3+%4"
).
arg
(
rect
.
width
()).
arg
(
rect
.
height
()).
arg
(
rect
.
x
()).
arg
(
rect
.
y
());
*
value
=
QString
::
fromLatin1
(
"%1x%2+%3+%4"
)
.
arg
(
rect
.
width
()).
arg
(
rect
.
height
())
.
arg
(
rect
.
x
()).
arg
(
rect
.
y
());
}
*
numchild
=
0
;
break
;
...
...
@@ -2150,13 +2129,16 @@ static void qDumpQVariantHelper(const QVariant *v, QString *value,
case
QVariant
::
SizeF
:
{
const
QSizeF
size
=
v
->
toSizeF
();
*
value
=
QString
::
fromLatin1
(
"%1x%2"
).
arg
(
size
.
width
()).
arg
(
size
.
height
());
*
value
=
QString
::
fromLatin1
(
"%1x%2"
)
.
arg
(
size
.
width
()).
arg
(
size
.
height
());
}
*
numchild
=
0
;
break
;
case
QVariant
::
RectF
:
{
const
QRectF
rect
=
v
->
toRectF
();
*
value
=
QString
::
fromLatin1
(
"%1x%2+%3+%4"
).
arg
(
rect
.
width
()).
arg
(
rect
.
height
()).
arg
(
rect
.
x
()).
arg
(
rect
.
y
());
*
value
=
QString
::
fromLatin1
(
"%1x%2+%3+%4"
)
.
arg
(
rect
.
width
()).
arg
(
rect
.
height
())
.
arg
(
rect
.
x
()).
arg
(
rect
.
y
());
}
*
numchild
=
0
;
break
;
...
...
tests/auto/debugger/main.cpp
View file @
206adf2d
...
...
@@ -18,12 +18,8 @@
# define STRINGIFY0(s) #s
# define STRINGIFY1(s) STRINGIFY0(s)
# define NS STRINGIFY1(QT_NAMESPACE) "::"
# define NSX "'"
# define NSY "'"
#else
# define NS ""
# define NSX ""
# define NSY ""
#endif
using
namespace
Debugger
;
...
...
@@ -135,7 +131,9 @@ private slots:
void
dumpQList_Int3
();
void
dumpQObject
();
void
dumpQString
();
void
dumpQVariant
();
void
dumpQVariant_invalid
();
void
dumpQVariant_QString
();
void
dumpQVariant_QStringList
();
void
dumpStdVector
();
public
slots
:
...
...
@@ -497,11 +495,11 @@ void tst_Debugger::dumpQObject()
&
parent
,
NS
"QObject"
,
false
);
testDumper
(
"value='',valueencoded='2',type='$T',displayedtype='QObject',"
"numchild='4',children=["
"{name='properties',
exp='*(class "
NSX
"$T"
NSY
"*)
$A',type='$TPropertyList',"
"{name='properties',
addr='
$A',type='$TPropertyList',"
"value='<1 items>',numchild='1'},"
"{name='signals',
exp='*(class "
NSX
"$T"
NSY
"*)
$A',type='$TSignalList',"
"{name='signals',
addr='
$A',type='$TSignalList',"
"value='<2 items>',numchild='2'},"
"{name='slots',
exp='*(class "
NSX
"$T"
NSY
"*)
$A',type='$TSlotList',"
"{name='slots',
addr='
$A',type='$TSlotList',"
"value='<2 items>',numchild='2'},"
"{name='parent',value='0x0',type='$T *',numchild='0'},"
"{name='className',value='QObject',type='',numchild='0'}]"
,
...
...
@@ -510,9 +508,9 @@ void tst_Debugger::dumpQObject()
#if 0
testDumper("numchild='2',value='<2 items>',type='QObjectSlotList',"
"children=[{name='2',value='deleteLater()',"
"numchild='0',
exp='*(class "NSX"QObject"NSY"*)
$A',type='QObjectSlot'},"
"numchild='0',
addr='
$A',type='QObjectSlot'},"
"{name='3',value='_q_reregisterTimers(void*)',"
"numchild='0',
exp='*(class 'QObject'*)
$A',type='QObjectSlot'}]",
"numchild='0',
addr='
$A',type='QObjectSlot'}]",
&parent, NS"QObjectSlotList", true);
#endif
...
...
@@ -527,11 +525,11 @@ void tst_Debugger::dumpQObject()
child
.
setObjectName
(
"A Child"
);
QByteArray
ba
=
"value='QQAgAEMAaABpAGwAZAA=',valueencoded='2',type='$T',"
"displayedtype='QObject',numchild='4',children=["
"{name='properties',
exp='*(class "
NSX
"$T"
NSY
"*)
$A',type='$TPropertyList',"
"{name='properties',
addr='
$A',type='$TPropertyList',"
"value='<1 items>',numchild='1'},"
"{name='signals',
exp='*(class "
NSX
"$T"
NSY
"*)
$A',type='$TSignalList',"
"{name='signals',
addr='
$A',type='$TSignalList',"
"value='<2 items>',numchild='2'},"
"{name='slots',
exp='*(class "
NSX
"$T"
NSY
"*)
$A',type='$TSlotList',"
"{name='slots',
addr='
$A',type='$TSlotList',"
"value='<2 items>',numchild='2'},"
"{name='parent',addr='"
+
str
(
&
parent
)
+
"',"
"value='QQAgAFAAYQByAGUAbgB0AA==',valueencoded='2',type='$T',"
...
...
@@ -558,17 +556,31 @@ void tst_Debugger::dumpQString()
&
s
,
NS
"QString"
,
false
);
}
void
tst_Debugger
::
dumpQVariant
()
void
tst_Debugger
::
dumpQVariant
_invalid
()
{
QVariant
v
;
testDumper
(
"value='(invalid)',type='$T',numchild='0'"
,
&
v
,
NS
"QVariant"
,
false
);
v
=
"abc"
;
}
void
tst_Debugger
::
dumpQVariant_QString
()
{
QVariant
v
=
"abc"
;
testDumper
(
"value='KFFTdHJpbmcpICJhYmMi',valueencoded='5',type='$T',"
"numchild='0'"
,
&
v
,
NS
"QVariant"
,
true
);
/*
FIXME: the QString version should have a child:
testDumper("value='KFFTdHJpbmcpICJhYmMi',valueencoded='5',type='$T',"
"numchild='1',children=[{name='value',value='IgBhAGIAYwAiAA==',"
"valueencoded='4',type='QString',numchild='0'}]",
&v, NS"QVariant", true);
v
=
QStringList
()
<<
"Hi"
;
*/
}
void
tst_Debugger
::
dumpQVariant_QStringList
()
{
QVariant
v
=
QStringList
()
<<
"Hi"
;
return
;
// FIXME
testDumper
(
"value='(QStringList) ',type='$T',"
"numchild='1',children=[{name='value',"
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment