forked from qt-creator/qt-creator
Debugger: Fix expansion of std::string et al
The objects have been reported as 'having children', but when asked for them nothing was produced, leading to an endless loop (until the next 'step' command). Change-Id: I3bbfe10a7ed980b27a5fca1edfe44dd8983b8f7b Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
@@ -569,7 +569,9 @@ class DumperBase:
|
||||
elided, shown = self.computeLimit(size, limit)
|
||||
return elided, self.readMemory(data, shown)
|
||||
|
||||
def putCharArrayHelper(self, data, size, charSize, displayFormat = AutomaticFormat):
|
||||
def putCharArrayHelper(self, data, size, charSize,
|
||||
displayFormat = AutomaticFormat,
|
||||
makeExpandable = True):
|
||||
bytelen = size * charSize
|
||||
elided, shown = self.computeLimit(bytelen, self.displayStringLimit)
|
||||
mem = self.readMemory(data, shown)
|
||||
@@ -595,6 +597,13 @@ class DumperBase:
|
||||
elided, shown = self.computeLimit(bytelen, 100000)
|
||||
self.putField("editvalue", self.readMemory(data, shown))
|
||||
|
||||
if makeExpandable:
|
||||
self.putNumChild(size)
|
||||
if self.isExpanded():
|
||||
with Children(self):
|
||||
for i in range(size):
|
||||
self.putSubItem(size, data[i])
|
||||
|
||||
def readMemory(self, addr, size):
|
||||
data = self.extractBlob(addr, size).toBytes()
|
||||
return self.hexencode(data)
|
||||
@@ -1010,7 +1019,8 @@ class DumperBase:
|
||||
n = int(arrayByteSize / ts)
|
||||
if displayFormat != RawFormat and p:
|
||||
if innerTypeName == "char" or innerTypeName == "wchar_t":
|
||||
self.putCharArrayHelper(p, n, ts, self.currentItemFormat())
|
||||
self.putCharArrayHelper(p, n, ts, self.currentItemFormat(),
|
||||
makeExpandable = False)
|
||||
else:
|
||||
self.tryPutSimpleFormattedPointer(p, arrayType, innerTypeName,
|
||||
displayFormat, arrayByteSize)
|
||||
|
Reference in New Issue
Block a user