diff --git a/src/plugins/debugger/gdb/gdbmi.cpp b/src/plugins/debugger/gdb/gdbmi.cpp
index f6b736599a7588ce4e4c701bd0ea1cc63dd0ca65..3a8a2ed488da81e3fd178d6c00800c8623cf7e4e 100644
--- a/src/plugins/debugger/gdb/gdbmi.cpp
+++ b/src/plugins/debugger/gdb/gdbmi.cpp
@@ -39,6 +39,12 @@
 namespace Debugger {
 namespace Internal {
 
+void skipCommas(const char *&from, const char *to)
+{
+    while (*from == ',' && from != to)
+        ++from;
+}
+
 QTextStream &operator<<(QTextStream &os, const GdbMi &mi)
 {
     return os << mi.toString();
@@ -180,6 +186,7 @@ void GdbMi::parseTuple(const char *&from, const char *to)
 
 void GdbMi::parseTuple_helper(const char *&from, const char *to)
 {
+    skipCommas(from, to);
     //qDebug() << "parseTuple_helper: " << QByteArray(from, to - from);
     m_type = Tuple;
     while (from < to) {
@@ -193,8 +200,7 @@ void GdbMi::parseTuple_helper(const char *&from, const char *to)
         if (!child.isValid())
             return;
         m_children += child;
-        if (*from == ',')
-            ++from;
+        skipCommas(from, to);
     }
 }
 
@@ -204,6 +210,7 @@ void GdbMi::parseList(const char *&from, const char *to)
     QTC_ASSERT(*from == '[', /**/);
     ++from;
     m_type = List;
+    skipCommas(from, to);
     while (from < to) {
         if (*from == ']') {
             ++from;
@@ -213,8 +220,7 @@ void GdbMi::parseList(const char *&from, const char *to)
         child.parseResultOrValue(from, to);
         if (child.isValid())
             m_children += child;
-        if (*from == ',')
-            ++from;
+        skipCommas(from, to);
     }
 }