aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2022-08-02 14:51:23 +0200
committerhjk <hjk@qt.io>2022-08-03 08:18:39 +0000
commitf14634a65151a7966c5d25d942267b3685e81eb1 (patch)
tree03dcf6221c85a0a58161492499150a5f94a8b3de
parenta35d56ca2eab3763e98e58f3ef739785b7bcd294 (diff)
Debugger: Fix bitfield dumping with Python 3
Change-Id: I2959a2e14c6f25e29460de74ea95a16a5226d48e Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--share/qtcreator/debugger/dumper.py7
-rw-r--r--tests/auto/debugger/tst_dumpers.cpp23
2 files changed, 25 insertions, 5 deletions
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index 3f3acbe46da..a8b0bf108a8 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -3198,7 +3198,7 @@ class DumperBase():
return self.cast(self.type.ltarget).extractField(field)
if self.type.code in (TypeCode.Reference, TypeCode.RValueReference):
return self.dereference().extractField(field)
- #DumperBase.warn('FIELD: %s ' % field)
+ #DumperBase.warn('FIELD: %s ' % (field,))
val = self.dumper.Value(self.dumper)
val.name = field.name
val.isBaseClass = field.isBase
@@ -3227,10 +3227,7 @@ class DumperBase():
lbyte = ldata[i]
else:
lbyte = ldata[fieldOffset + fieldSize - 1 - i]
- if sys.version_info[0] >= 3:
- data += lbyte
- else:
- data += ord(lbyte)
+ data += ord(lbyte)
data = data >> fieldBitpos
data = data & ((1 << fieldBitsize) - 1)
val.lvalue = data
diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp
index 231f8aed83c..b4dbe279c05 100644
--- a/tests/auto/debugger/tst_dumpers.cpp
+++ b/tests/auto/debugger/tst_dumpers.cpp
@@ -6121,6 +6121,29 @@ void tst_Dumpers::dumper_data()
+ Check("watch.1.12", "s.front", "13", "unsigned int") % GdbEngine;
+ QTest::newRow("Bitfield2")
+ << Data("#include <QList>\n\n"
+ "struct Entry\n"
+ "{\n"
+ " Entry(bool x) : enabled(x) {}\n"
+ " bool enabled : 1;\n"
+ " bool autorepeat : 1;\n"
+ " signed int id;\n"
+ "};\n",
+
+ "QList<Entry> list;\n"
+ "list.append(Entry(true));\n"
+ "list.append(Entry(false));\n",
+
+ "&list")
+
+ + CoreProfile()
+ + Check("list.0.enabled", "1", "bool : 1") % NoCdbEngine
+ + Check("list.0.enabled", "1", "bool") % CdbEngine
+ + Check("list.1.enabled", "0", "bool : 1") % NoCdbEngine
+ + Check("list.1.enabled", "0", "bool") % CdbEngine;
+
+
QTest::newRow("Function")
<< Data("#include <QByteArray>\n"
"struct Function\n"