diff options
author | hjk <hjk@qt.io> | 2022-08-02 14:51:23 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2022-08-03 08:18:39 +0000 |
commit | f14634a65151a7966c5d25d942267b3685e81eb1 (patch) | |
tree | 03dcf6221c85a0a58161492499150a5f94a8b3de | |
parent | a35d56ca2eab3763e98e58f3ef739785b7bcd294 (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.py | 7 | ||||
-rw-r--r-- | tests/auto/debugger/tst_dumpers.cpp | 23 |
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" |