debugger: make max string size more configurable

Change-Id: I4fd3c854eb2bb752c5338e96f2e19884bdcf71a8
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
hjk
2012-05-29 08:05:27 +02:00
committed by hjk
parent 07a9004f62
commit 1ba684ad39

View File

@@ -81,6 +81,8 @@ DisplayProcess \
= range(5) = range(5)
qqStringCutOff = 1000
def hasInferiorThreadList(): def hasInferiorThreadList():
#return False #return False
try: try:
@@ -691,9 +693,11 @@ def extractByteArray(value):
if size > 0: if size > 0:
checkAccess(data, 4) checkAccess(data, 4)
checkAccess(data + size) == 0 checkAccess(data + size) == 0
return extractCharArray(data, min(100, size)) return extractCharArray(data, min(qqStringCutOff, size))
def encodeCharArray(p, maxsize, limit = -1): def encodeCharArray(p, maxsize = None, limit = -1):
if maxsize == None:
maxsize = qqStringCutOff
t = lookupType("unsigned char").pointer() t = lookupType("unsigned char").pointer()
p = p.cast(t) p = p.cast(t)
if limit == -1: if limit == -1:
@@ -711,7 +715,9 @@ def encodeCharArray(p, maxsize, limit = -1):
s += "2e2e2e" s += "2e2e2e"
return s return s
def encodeChar2Array(p, maxsize): def encodeChar2Array(p, maxsize = None):
if maxsize == None:
maxsize = qqStringCutOff
t = lookupType("unsigned short").pointer() t = lookupType("unsigned short").pointer()
p = p.cast(t) p = p.cast(t)
limit = findFirstZero(p, maxsize) limit = findFirstZero(p, maxsize)
@@ -723,7 +729,9 @@ def encodeChar2Array(p, maxsize):
s += "2e002e002e00" s += "2e002e002e00"
return s return s
def encodeChar4Array(p, maxsize): def encodeChar4Array(p, maxsize = None):
if maxsize == None:
maxsize = qqStringCutOff
t = lookupType("unsigned int").pointer() t = lookupType("unsigned int").pointer()
p = p.cast(t) p = p.cast(t)
limit = findFirstZero(p, maxsize) limit = findFirstZero(p, maxsize)
@@ -754,7 +762,7 @@ def encodeByteArray(value):
if size > 0: if size > 0:
checkAccess(data, 4) checkAccess(data, 4)
checkAccess(data + size) == 0 checkAccess(data + size) == 0
return encodeCharArray(data, 100, size) return encodeCharArray(data, limit = size)
def qQStringData(value): def qQStringData(value):
private = value['d'] private = value['d']
@@ -778,7 +786,7 @@ def encodeString(value):
checkAccess(data, 4) checkAccess(data, 4)
checkAccess(data + size) == 0 checkAccess(data + size) == 0
s = "" s = ""
limit = min(size, 1000) limit = min(size, qqStringCutOff)
try: try:
# gdb.Inferior is new in gdb 7.2 # gdb.Inferior is new in gdb 7.2
inferior = gdb.inferiors()[0] inferior = gdb.inferiors()[0]
@@ -1487,13 +1495,13 @@ class Dumper:
format = self.currentItemFormat() format = self.currentItemFormat()
if format == 0: if format == 0:
# Explicitly requested Latin1 formatting. # Explicitly requested Latin1 formatting.
self.putValue(encodeCharArray(value, 100), Hex2EncodedLatin1) self.putValue(encodeCharArray(value), Hex2EncodedLatin1)
elif format == 1: elif format == 1:
# Explicitly requested UTF-8 formatting. # Explicitly requested UTF-8 formatting.
self.putValue(encodeCharArray(value, 100), Hex2EncodedUtf8) self.putValue(encodeCharArray(value), Hex2EncodedUtf8)
elif format == 2: elif format == 2:
# Explicitly requested Local 8-bit formatting. # Explicitly requested Local 8-bit formatting.
self.putValue(encodeCharArray(value, 100), Hex2EncodedLocal8Bit) self.putValue(encodeCharArray(value), Hex2EncodedLocal8Bit)
else: else:
self.putValue("@0x%x" % long(value.cast(targetType.pointer()))) self.putValue("@0x%x" % long(value.cast(targetType.pointer())))
if self.currentIName in self.expandedINames: if self.currentIName in self.expandedINames:
@@ -1594,7 +1602,7 @@ class Dumper:
# Explicitly requested UTF-16 formatting. # Explicitly requested UTF-16 formatting.
self.putAddress(value.address) self.putAddress(value.address)
self.putType(typeName) self.putType(typeName)
self.putValue(encodeChar2Array(value, 100), Hex4EncodedBigEndian) self.putValue(encodeChar2Array(value), Hex4EncodedBigEndian)
self.putNumChild(0) self.putNumChild(0)
return return
@@ -1602,7 +1610,7 @@ class Dumper:
# Explicitly requested UCS-4 formatting. # Explicitly requested UCS-4 formatting.
self.putAddress(value.address) self.putAddress(value.address)
self.putType(typeName) self.putType(typeName)
self.putValue(encodeChar4Array(value, 100), Hex8EncodedBigEndian) self.putValue(encodeChar4Array(value), Hex8EncodedBigEndian)
self.putNumChild(0) self.putNumChild(0)
return return