diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py
index 1050c066659f3471904002489db03c8039180c26..a76674e0a60d1a9988b93821cc4e7d7caf1fc051 100644
--- a/share/qtcreator/gdbmacros/dumper.py
+++ b/share/qtcreator/gdbmacros/dumper.py
@@ -148,29 +148,28 @@ def listOfBreakpoints(d):
 
         # A breakpoint of its own
         bp.number = int(number)
-        d.putCommaIfNeeded()
-        d.put('bkpt={number="%s"' % bp.number)
-        d.put(',type="breakpoint"')
-        d.put(',disp="keep"')
-        d.put(',enabled="y"')
+        d.put('bkpt={number="%s",' % bp.number)
+        d.put('type="breakpoint",')
+        d.put('disp="keep",')
+        d.put('enabled="y",')
         for address in bp.address:
-            d.put(',addr="%s"' % address)
+            d.put('addr="%s",' % address)
         if not bp.function is None:
-            d.put(',func="%s"' % bp.function)
+            d.put('func="%s",' % bp.function)
         if not bp.filename is None:
-            d.put(',file="%s"' % bp.filename)
+            d.put('file="%s",' % bp.filename)
         if not bp.fullname is None:
-            d.put(',fullname="%s"' % bp.fullname)
+            d.put('fullname="%s",' % bp.fullname)
         if not bp.linenumber is None:
-            d.put(',line="%s"' % bp.linenumber)
+            d.put('line="%s",' % bp.linenumber)
         if not bp.condition is None:
-            d.put(',cond="%s"' % bp.condition)
+            d.put('cond="%s",' % bp.condition)
         if not bp.fullname is None:
-            d.put(',fullname="%s"' % bt.fullname)
+            d.put('fullname="%s",' % bt.fullname)
         if not bp.times is None:
-            d.put(',times="1"' % bp.times)
+            d.put('times="1",' % bp.times)
         #d.put('original-location="-"')
-        d.put('}')
+        d.put('},')
         bp = Breakpoint()
 
 
@@ -632,6 +631,7 @@ class FrameCommand(gdb.Command):
         breakpoints = d.safeoutput
 
         print('data=[' + locals + sep + watchers + '],bkpts=[' + breakpoints + ']\n')
+        #print('data=[' + locals + sep + watchers + ']\n')
 
 
     def handleWatch(self, d, exp, iname):
@@ -671,16 +671,14 @@ class FrameCommand(gdb.Command):
         d.put('exp="%s",' % exp)
         handled = False
         if exp == "<Edit>":
-            d.put(',value=" ",')
-            d.put('type=" ",numchild="0"')
+            d.put('value=" ",type=" ",numchild="0",')
         else:
             try:
                 value = parseAndEvaluate(exp)
                 item = Item(value, iname, None, None)
                 d.putItemHelper(item)
             except RuntimeError:
-                d.put(',value="<invalid>",')
-                d.put('type="<unknown>",numchild="0"')
+                d.put('value="<invalid>",type="<unknown>",numchild="0",')
         d.endHash()
 
 
@@ -736,31 +734,20 @@ class Dumper:
     def put(self, value):
         self.output += value
 
-    def putCommaIfNeeded(self):
-        c = self.output[-1:]
-        if c == '}' or c == '"' or c == ']' or c == '\n':
-            self.put(',')
-        #warn("C:'%s' COND:'%d' OUT:'%s'" %
-        #    (c, c == '}' or c == '"' or c == ']' or c == '\n', self.output))
-
     def putField(self, name, value):
-        self.putCommaIfNeeded()
-        self.put('%s="%s"' % (name, value))
+        self.put('%s="%s",' % (name, value))
 
     def beginHash(self):
-        self.putCommaIfNeeded()
         self.put('{')
 
     def endHash(self):
-        self.put('}')
+        self.put('},')
 
     def beginItem(self, name):
-        self.putCommaIfNeeded()
-        self.put(name)
-        self.put('="')
+        self.put('%s="' %s)
 
     def endItem(self):
-        self.put('"')
+        self.put('",')
 
     def beginChildren(self, numChild_ = 1, childType_ = None, childNumChild_ = None):
         childType = ""
@@ -773,7 +760,6 @@ class Dumper:
             maxNumChild = numChild_
         if numChild == 0:
             childType_ = None
-        self.putCommaIfNeeded()
         if not childType_ is None:
             childType = stripClassTag(str(childType_))
             self.put('childtype="%s",' % childType)
@@ -801,32 +787,29 @@ class Dumper:
             self.putEllipsis();
         self.childTypes.pop()
         self.childNumChilds.pop()
-        self.put(']')
+        self.put('],')
 
     def childRange(self):
         return xrange(qmin(self.maxNumChilds[-1], self.numChilds[-1]))
 
     # convenience
     def putItemCount(self, count):
-        self.putCommaIfNeeded()
-        self.put('value="<%s items>"' % count)
+        self.put('value="<%s items>",' % count)
 
     def putEllipsis(self):
-        self.putCommaIfNeeded()
-        self.put('{name="<incomplete>",value="",type="",numchild="0"}')
+        self.put('{name="<incomplete>",value="",type="",numchild="0"},')
 
     def putType(self, type):
         #warn("TYPES: '%s' '%s'" % (type, self.childTypes))
         #warn("  EQUAL 2: %s " % (str(type) == self.childTypes[-1]))
         type = stripClassTag(str(type))
         if len(type) > 0 and type != self.childTypes[-1]:
-            self.putCommaIfNeeded()
-            self.put('type="%s"' % type) # str(type.unqualified()) ?
+            self.put('type="%s",' % type) # str(type.unqualified()) ?
 
     def putNumChild(self, numchild):
         #warn("NUM CHILD: '%s' '%s'" % (numchild, self.childNumChilds[-1]))
         if numchild != self.childNumChilds[-1]:
-            self.put(',numchild="%s"' % numchild)
+            self.put('numchild="%s",' % numchild)
 
     def putValue(self, value, encoding = None):
         if not encoding is None:
@@ -835,21 +818,17 @@ class Dumper:
 
     def putStringValue(self, value):
         if value is None:
-            self.putCommaIfNeeded()
-            self.put('value="<not available>"')
+            self.put('value="<not available>",')
         else:
             str = encodeString(value)
-            self.putCommaIfNeeded()
-            self.put('valueencoded="%d",value="%s"' % (7, str))
+            self.put('valueencoded="%d",value="%s",' % (7, str))
 
     def putByteArrayValue(self, value):
         str = encodeByteArray(value)
-        self.putCommaIfNeeded()
-        self.put('valueencoded="%d",value="%s"' % (6, str))
+        self.put('valueencoded="%d",value="%s",' % (6, str))
 
     def putName(self, name):
-        self.putCommaIfNeeded()
-        self.put('name="%s"' % name)
+        self.put('name="%s",' % name)
 
     def isExpanded(self, item):
         #warn("IS EXPANDED: %s in %s" % (item.iname, self.expandedINames))