diff options
author | hjk <hjk@qt.io> | 2020-11-24 17:53:08 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-11-27 13:58:04 +0000 |
commit | 80fdbfff05d2adc6d6d23011a4dd4b1852ba4b2c (patch) | |
tree | 19883cddb2212a2d74a9938cfe1d140b10f40c45 | |
parent | b92a445a64e165f5e83432fa1fffeaeba3e26ffc (diff) |
Debugger: Use qArrayData instead of qArrayDataHelper
Change-Id: I97a6c428e6b09232c420e2b8cb3b5b31588c949f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | share/qtcreator/debugger/dumper.py | 17 | ||||
-rw-r--r-- | share/qtcreator/debugger/qttypes.py | 8 |
2 files changed, 12 insertions, 13 deletions
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index d0d1244ff1..acb80d3e67 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -570,6 +570,9 @@ class DumperBase(): self.check(0 <= size and size <= alloc and alloc <= 1000 * 1000 * 1000) return data, size, alloc + def qArrayData(self, value): + return self.qArrayDataHelper(self.extractPointer(value)) + def qArrayDataHelper(self, array_data_ptr): # array_data_ptr is what is e.g. stored in a QByteArray's d_ptr. if self.qtVersion() >= 0x050000: @@ -614,15 +617,14 @@ class DumperBase(): # of inferior calls if addr == 0: return 0, '' - data, size, alloc = self.qArrayDataHelper(addr) + data, size, alloc = self.qArrayData(value) if alloc != 0: self.check(0 <= size and size <= alloc and alloc <= 100 * 1000 * 1000) elided, shown = self.computeLimit(size, limit) return elided, self.readMemory(data, 2 * shown) def encodeByteArrayHelper(self, value, limit): - addr = self.extractPointer(value) - data, size, alloc = self.qArrayDataHelper(addr) + data, size, alloc = self.qArrayData(value) if alloc != 0: self.check(0 <= size and size <= alloc and alloc <= 100 * 1000 * 1000) elided, shown = self.computeLimit(size, limit) @@ -675,9 +677,6 @@ class DumperBase(): elided, data = self.encodeByteArrayHelper(value, limit) return data - def qArrayData(self, value): - return self.qArrayDataHelper(self.extractPointer(value)) - def putByteArrayValue(self, value): elided, data = self.encodeByteArrayHelper(value, self.displayStringLimit) self.putValue(data, 'latin1', elided=elided) @@ -1455,7 +1454,7 @@ class DumperBase(): # Offset of objectName in QObjectPrivate: 5 pointer + 2 int # - [QObjectData base] # - QString objectName - objectName = self.extractPointer(dd + 5 * ptrSize + 2 * intSize) + objectNameAddress = dd + 5 * ptrSize + 2 * intSize else: # Size of QObjectData: 5 pointer + 2 int @@ -1477,9 +1476,9 @@ class DumperBase(): # - QVector<int> runningTimers; # - QList<QPointer<QObject> > eventFilters; # - QString objectName - objectName = self.extractPointer(extra + 5 * ptrSize) + objectNameAddress = extra + 5 * ptrSize - data, size, alloc = self.qArrayDataHelper(objectName) + data, size, alloc = self.qArrayData(objectNameAddress) # Object names are short, and GDB can crash on to big chunks. # Since this here is a convenience feature only, limit it. diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index e6e501a309..1ceabdecdf 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -3170,12 +3170,12 @@ def qdump__qfloat16(d, value): def qdumpHelper_QCbor_string(d, container_ptr, element_index, is_bytes): # d.split('i@{QByteArray::size_type}pp', container_ptr) doesn't work with CDB, so be explicit: offset = 2 * d.ptrSize() if d.qtVersion() >= 0x060000 else 8 - data_d_ptr, elements_d_ptr = d.split('pp', container_ptr + offset) + _, elements_d_ptr = d.split('pp', container_ptr + offset) elements_data_ptr, elements_size, _ = d.vectorDataHelper(elements_d_ptr) element_at_n_addr = elements_data_ptr + element_index * 16 # sizeof(QtCbor::Element) == 15 element_value, _, element_flags = d.split('qII', element_at_n_addr) enc = 'latin1' if is_bytes or (element_flags & 8) else 'utf16' - bytedata, _, _ = d.qArrayDataHelper(data_d_ptr) + bytedata, _, _ = d.qArrayData(container_ptr + offset) bytedata += element_value if d.qtVersion() >= 0x060000: bytedata_len = d.extractInt64(bytedata) @@ -3206,11 +3206,11 @@ def qdumpHelper_QCbor_array(d, container_ptr, is_cbor): return # d.split('i@{QByteArray::size_type}pp', container_ptr) doesn't work with CDB, so be explicit: offset = 2 * d.ptrSize() if d.qtVersion() >= 0x060000 else 8 - data_d_ptr, elements_d_ptr = d.split('pp', container_ptr + offset) + _, elements_d_ptr = d.split('pp', container_ptr + offset) elements_data_ptr, elements_size, _ = d.vectorDataHelper(elements_d_ptr) d.putItemCount(elements_size) if d.isExpanded(): - bytedata, _, _ = d.qArrayDataHelper(data_d_ptr) + bytedata, _, _ = d.qArrayData(container_ptr + offset) with Children(d, maxNumChild=1000): for i in range(elements_size): d.putSubItem(i, qdumpHelper_QCborArray_valueAt(d, container_ptr, elements_data_ptr, i, bytedata, is_cbor)) |