diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 3ff4d7dc935..4e78f6e61fd 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -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.putField("iname", iname) + d.putField("name", exp) + d.putField("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('value=""') - d.put('type=" "') - d.put('numchild="0"') + d.putValue("") + d.putType(" ") + d.putNumChild(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.putField("iname", iname) + d.putField("name", exp) + d.putField("exp", exp) handled = False if exp == "": - d.put('value=" ",type=" ",numchild="0",') + d.putValue('value=" ",type=" ",numchild="0",') else: - try: + #try: value = parseAndEvaluate(exp) item = Item(value, iname, None, None) d.putItemHelper(item) - except RuntimeError: - d.put('value="",type="",numchild="0",') + #except RuntimeError: + #d.put('value="",type="",numchild="0",') d.endHash() @@ -1254,6 +1255,16 @@ class Dumper: Item(item.value.dereference(), item.iname, "*", "*")) self.endChildren() + elif str(type).startswith(" 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()