Skip to content
GitLab
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
c2b77a22
Commit
c2b77a22
authored
Mar 16, 2010
by
hjk
Browse files
debugger: fix evaluation of complex watchers
parent
2e721186
Changes
1
Hide whitespace changes
Inline
Side-by-side
share/qtcreator/gdbmacros/dumper.py
View file @
c2b77a22
...
...
@@ -676,6 +676,7 @@ class FrameCommand(gdb.Command):
# Locals
#
for
item
in
listOfLocals
(
varList
):
d
.
anonNumber
=
-
1
#warn("ITEM NAME %s: " % item.name)
try
:
#warn("ITEM VALUE %s: " % item.value)
...
...
@@ -779,19 +780,19 @@ class FrameCommand(gdb.Command):
def
handleWatch
(
self
,
d
,
exp
,
iname
):
exp
=
str
(
exp
)
#warn("HANDLING WATCH %s, INAME: '%s'" % (exp, iname))
if
exp
.
startswith
(
"["
):
warn
(
"EVAL: EXP: %s"
%
exp
)
if
exp
.
startswith
(
"["
)
and
exp
.
endswith
(
"]"
)
:
#
warn("EVAL: EXP: %s" % exp)
d
.
beginHash
()
d
.
put
(
'iname="%s",'
%
iname
)
d
.
put
(
'name="%s",'
%
exp
)
d
.
put
(
'exp="%s",'
%
exp
)
d
.
put
Field
(
"iname"
,
iname
)
d
.
put
Field
(
"name"
,
exp
)
d
.
put
Field
(
"exp"
,
exp
)
try
:
list
=
eval
(
exp
)
#warn("EVAL: LIST: %s" % list)
d
.
put
(
'value=" "'
)
d
.
put
(
'type=" "'
)
d
.
put
(
'numchild="%d"'
%
len
(
list
))
d
.
putValue
(
""
)
d
.
putType
(
" "
)
d
.
putNumChild
(
len
(
list
))
# This is a list of expressions to evaluate
d
.
beginChildren
(
len
(
list
))
itemNumber
=
0
...
...
@@ -801,28 +802,28 @@ class FrameCommand(gdb.Command):
d
.
endChildren
()
except
:
warn
(
"EVAL: ERROR CAUGHT"
)
d
.
put
(
'v
alue
=
"<syntax error>"
'
)
d
.
put
(
't
ype
=
" "
'
)
d
.
put
(
'n
um
c
hild
="0"'
)
d
.
put
V
alue
(
"<syntax error>"
)
d
.
put
T
ype
(
" "
)
d
.
put
N
um
C
hild
(
0
)
d
.
beginChildren
(
0
)
d
.
endChildren
()
d
.
endHash
()
return
d
.
beginHash
()
d
.
put
(
'iname="%s",'
%
iname
)
d
.
put
(
'name="%s",'
%
exp
)
d
.
put
(
'exp="%s",'
%
exp
)
d
.
put
Field
(
"iname"
,
iname
)
d
.
put
Field
(
"name"
,
exp
)
d
.
put
Field
(
"exp"
,
exp
)
handled
=
False
if
exp
==
"<Edit>"
:
d
.
put
(
'value=" ",type=" ",numchild="0",'
)
d
.
put
Value
(
'value=" ",type=" ",numchild="0",'
)
else
:
try
:
#
try:
value
=
parseAndEvaluate
(
exp
)
item
=
Item
(
value
,
iname
,
None
,
None
)
d
.
putItemHelper
(
item
)
except
RuntimeError
:
d
.
put
(
'value="<invalid>",type="<unknown>",numchild="0",'
)
#
except RuntimeError:
#
d.put('value="<invalid>",type="<unknown>",numchild="0",')
d
.
endHash
()
...
...
@@ -1254,6 +1255,16 @@ class Dumper:
Item
(
item
.
value
.
dereference
(),
item
.
iname
,
"*"
,
"*"
))
self
.
endChildren
()
elif
str
(
type
).
startswith
(
"<anon"
):
# Anonymous union. We need a dummy name to distinguish
# multiple anonymous unions in the struct.
self
.
putType
(
item
.
value
.
type
)
self
.
putValue
(
"{...}"
)
self
.
anonNumber
+=
1
self
.
beginChildren
(
1
)
self
.
listAnonymous
(
item
,
"#%d"
%
self
.
anonNumber
,
type
)
self
.
endChildren
()
else
:
#warn("GENERIC STRUCT: %s" % item.value.type)
#warn("INAME: %s " % item.iname)
...
...
@@ -1292,7 +1303,6 @@ class Dumper:
self
.
beginChildren
(
1
,
innerType
)
baseNumber
=
0
anonNumber
=
0
for
field
in
fields
:
#warn("FIELD: %s" % field)
#warn(" BITSIZE: %s" % field.bitsize)
...
...
@@ -1329,8 +1339,8 @@ class Dumper:
elif
len
(
field
.
name
)
==
0
:
# Anonymous union. We need a dummy name to distinguish
# multiple anonymous unions in the struct.
anonNumber
+=
1
self
.
listAnonymous
(
item
,
"#%d"
%
anonNumber
,
field
.
type
)
self
.
anonNumber
+=
1
self
.
listAnonymous
(
item
,
"#%d"
%
self
.
anonNumber
,
field
.
type
)
else
:
# Named field.
self
.
beginHash
()
...
...
@@ -1342,8 +1352,8 @@ class Dumper:
self
.
endChildren
()
def
listAnonymous
(
self
,
item
,
name
,
type
):
anonNumber
=
0
for
field
in
type
.
fields
():
warn
(
"FIELD NAME: %s"
%
field
.
name
)
if
len
(
field
.
name
)
>
0
:
value
=
item
.
value
[
field
.
name
]
child
=
Item
(
value
,
item
.
iname
,
field
.
name
,
field
.
name
)
...
...
@@ -1353,8 +1363,8 @@ class Dumper:
self
.
endHash
();
else
:
# Further nested.
anonNumber
+=
1
name
=
"#%d"
%
anonNumber
self
.
anonNumber
+=
1
name
=
"#%d"
%
self
.
anonNumber
iname
=
"%s.%s"
%
(
item
.
iname
,
name
)
child
=
Item
(
item
.
value
,
iname
,
None
,
name
)
self
.
beginHash
()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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