From fea6bcd9448976c5154b97e58997b667e5e11423 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Mon, 18 Apr 2011 16:15:39 +0200 Subject: [PATCH] debugger: enable latin1 or utf8 char[] display --- share/qtcreator/gdbmacros/dumper.py | 16 ++++++++++++---- src/plugins/debugger/watchhandler.cpp | 11 +++++++++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 0565159b6de..f0b551114fd 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -1643,11 +1643,19 @@ class Dumper: return if value.type.code == gdb.TYPE_CODE_ARRAY: - self.putType(realtype) - self.putAddress(value.address) - self.putNumChild(1) baseptr = value.cast(realtype.pointer()) - self.putValue("%s" % baseptr) + if format == 0 or format == 1: + # Explicityly requested Latin1 or UTF-8 formatting. + f = select(format == 0, Hex2EncodedLatin1, Hex2EncodedUtf8) + self.putAddress(value.address) + self.putType(realtype) + self.putValue(encodeCharArray(value, 100), f) + self.putNumChild(1) + else: + self.putType(realtype) + self.putAddress(value.address) + self.putValue("%s" % baseptr) + self.putNumChild(1) if self.isExpanded(item): charptr = lookupType("unsigned char").pointer() addr1 = (baseptr+1).cast(charptr) diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 817cd2f090b..b2502fd4962 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -702,9 +702,16 @@ QVariant WatchModel::data(const QModelIndex &idx, int role) const << tr("UTF8 string") << tr("UTF16 string") << tr("UCS4 string"); + if (data.type.contains("char[") || data.type.contains("char [")) + return QStringList() + << tr("Latin1 string") + << tr("UTF8 string"); if (isIntType(data.type) && data.type != "bool") - return QStringList() << tr("decimal") << tr("hexadecimal") - << tr("binary") << tr("octal"); + return QStringList() + << tr("decimal") + << tr("hexadecimal") + << tr("binary") + << tr("octal"); // Hack: Compensate for namespaces. QString type = data.type; int pos = type.indexOf("::Q"); -- GitLab