diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py
index ebc3b09346351289b71dd93b54464252566943ad..79e9449715ea2d39c9f70a5f5d601166f0e26bb8 100644
--- a/share/qtcreator/gdbmacros/dumper.py
+++ b/share/qtcreator/gdbmacros/dumper.py
@@ -6,7 +6,6 @@ import base64
 import __builtin__
 import os
 
-
 # Fails on Windows.
 try:
     import curses.ascii
@@ -43,6 +42,11 @@ def removeTempFile(name, file):
     except:
         pass
 
+try:
+    import binascii
+except:
+    pass
+
 verbosity = 0
 verbosity = 1
 
@@ -750,21 +754,28 @@ def extractByteArray(value):
     if size > 0:
         checkAccess(data, 4)
         checkAccess(data + size) == 0
-    return extractCharArray(data, 100)
+    return extractCharArray(data, 1000, size)
 
 def encodeCharArray(p, maxsize, size = -1):
     t = lookupType("unsigned char").pointer()
     p = p.cast(t)
     if size == -1:
-        i = findFirstZero(p, maxsize)
-    else:
-        i = size
-    limit = select(i < 0, maxsize, i)
+        size = findFirstZero(p, maxsize)
+    if size == -1:
+        size = maxsize
+    limit = size
+    if size > maxsize:
+        limit = maxsize
     s = ""
-    for i in xrange(limit):
-        s += "%02x" % int(p.dereference())
-        p += 1
-    if i == maxsize:
+    try:
+        # gdb.Inferior is new in gdb 7.2
+        inferior = gdb.inferiors()[0]
+        s = binascii.hexlify(inferior.read_memory(p, limit))
+    except:
+        for i in xrange(limit):
+            s += "%02x" % int(p.dereference())
+            p += 1
+    if maxsize < size:
         s += "2e2e2e"
     return s
 
@@ -804,7 +815,7 @@ def encodeByteArray(value):
     if size > 0:
         checkAccess(data, 4)
         checkAccess(data + size) == 0
-    return encodeCharArray(data, size)
+    return encodeCharArray(data, 1000, size)
 
 def encodeString(value):
     d_ptr = value['d'].dereference()
@@ -818,11 +829,16 @@ def encodeString(value):
     checkRef(d_ptr["ref"])
     p = gdb.Value(d_ptr["data"])
     s = ""
-    for i in xrange(size):
-        val = int(p.dereference())
-        s += "%02x" % (val % 256)
-        s += "%02x" % (val / 256)
-        p += 1
+    try:
+        # gdb.Inferior is new in gdb 7.2
+        inferior = gdb.inferiors()[0]
+        s = binascii.hexlify(inferior.read_memory(p, 2 * int(size)))
+    except:
+        for i in xrange(size):
+            val = int(p.dereference())
+            s += "%02x" % (val % 256)
+            s += "%02x" % (val / 256)
+            p += 1
     return s
 
 def stripTypedefs(type):