From 0102455fd0532a189e561c9cfa8f8d01689a63cf Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 1 Sep 2014 23:35:11 +0200 Subject: [PATCH] Debugger: Fix a few Creator related dumpers Change-Id: I53d857119872200938c352dbceb8a327dee2a7eb Reviewed-by: hjk --- share/qtcreator/debugger/creatortypes.py | 21 ++++++++++----------- share/qtcreator/debugger/dumper.py | 10 ++++++++++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py index 2e5b5447d1d..5201aca6e4b 100644 --- a/share/qtcreator/debugger/creatortypes.py +++ b/share/qtcreator/debugger/creatortypes.py @@ -32,11 +32,10 @@ from dumper import * def qdump__Core__Id(d, value): try: name = d.parseAndEvaluate("Core::nameForId(%d)" % value["m_id"]) - d.putValue(d.encodeCharArray(name), Hex2EncodedLatin1) - d.putPlainChildren(value) + d.putSimpleCharArray(name) except: d.putValue(value["m_id"]) - d.putNumChild(0) + d.putPlainChildren(value) def qdump__Debugger__Internal__GdbMi(d, value): str = d.encodeByteArray(value["m_name"]) + "3a20" \ @@ -65,12 +64,11 @@ def qdump__Debugger__Internal__ThreadId(d, value): d.putPlainChildren(value) def qdump__CPlusPlus__ByteArrayRef(d, value): - d.putValue(d.encodeCharArray(value["m_start"], 100, value["m_length"]), - Hex2EncodedLatin1) + d.putSimpleCharArray(value["m_start"], value["m_length"]) d.putPlainChildren(value) def qdump__CPlusPlus__Identifier(d, value): - d.putValue(d.encodeCharArray(value["_chars"]), Hex2EncodedLatin1) + d.putSimpleCharArray(value["_chars"], value["_size"]) d.putPlainChildren(value) def qdump__CPlusPlus__IntegerType(d, value): @@ -79,20 +77,21 @@ def qdump__CPlusPlus__IntegerType(d, value): def qdump__CPlusPlus__NamedType(d, value): literal = d.downcast(value["_name"]) - d.putValue(d.encodeCharArray(literal["_chars"]), Hex2EncodedLatin1) + d.putItem(literal) + d.putBetterType(value.type) d.putPlainChildren(value) def qdump__CPlusPlus__TemplateNameId(d, value): - s = d.encodeCharArray(value["_identifier"]["_chars"]) - d.putValue(s + "3c2e2e2e3e", Hex2EncodedLatin1) + d.putItem(value["_identifier"].dereference()) + d.putBetterType(value.type) d.putPlainChildren(value) def qdump__CPlusPlus__Literal(d, value): - d.putValue(d.encodeCharArray(value["_chars"]), Hex2EncodedLatin1) + d.putSimpleCharArray(value["_chars"], value["_size"]) d.putPlainChildren(value) def qdump__CPlusPlus__StringLiteral(d, value): - d.putValue(d.encodeCharArray(value["_chars"]), Hex2EncodedLatin1) + d.putSimpleCharArray(value["_chars"], value["_size"]) d.putPlainChildren(value) def qdump__CPlusPlus__Internal__Value(d, value): diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index c610acb3713..5daa4bcbb43 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -823,6 +823,16 @@ class DumperBase: self.put('",') return True + def putSimpleCharArray(self, base, size = None): + t = self.lookupType("char") + p = base.cast(t.pointer()) + if size is None: + elided, shown = self.findFirstZero(p, self.displayStringLimit) + else: + elided, shown = self.computeLimit(int(size), self.displayStringLimit) + data = self.readMemory(p, shown) + self.putValue(data, Hex2EncodedLatin1, elided=elided) + def putDisplay(self, format, value = None, cmd = None): self.put('editformat="%s",' % format) if cmd is None: