forked from qt-creator/qt-creator
Dumper: Add MSVC standard string dumper
Change-Id: Iaea8123b3b8aeebd931c5f837ed10f0fba6b23f7 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -529,6 +529,9 @@ def qdumpHelper_std__string(d, value, charType, format):
|
|||||||
if d.isQnxTarget():
|
if d.isQnxTarget():
|
||||||
qdumpHelper__std__string__QNX(d, value, charType, format)
|
qdumpHelper__std__string__QNX(d, value, charType, format)
|
||||||
return
|
return
|
||||||
|
if d.isMsvcTarget():
|
||||||
|
qdumpHelper__std__string__MSVC(d, value, charType, format)
|
||||||
|
return
|
||||||
|
|
||||||
data = value.extractPointer()
|
data = value.extractPointer()
|
||||||
# We can't lookup the std::string::_Rep type without crashing LLDB,
|
# We can't lookup the std::string::_Rep type without crashing LLDB,
|
||||||
@@ -554,6 +557,23 @@ def qdumpHelper__std__string__QNX(d, value, charType, format):
|
|||||||
d.check(0 <= size and size <= alloc and alloc <= 100*1000*1000)
|
d.check(0 <= size and size <= alloc and alloc <= 100*1000*1000)
|
||||||
d.putCharArrayHelper(sizePtr, size, charType, format)
|
d.putCharArrayHelper(sizePtr, size, charType, format)
|
||||||
|
|
||||||
|
def qdumpHelper__std__string__MSVC(d, value, charType, format):
|
||||||
|
val = value
|
||||||
|
try:
|
||||||
|
size = value['_Mysize'].integer()
|
||||||
|
alloc = value['_Myres'].integer()
|
||||||
|
except:
|
||||||
|
val = value['_Mypair']['_Myval2']
|
||||||
|
size = d.extractUInt64(val['_Mysize'])
|
||||||
|
alloc = d.extractUInt64(val['_Myres'])
|
||||||
|
|
||||||
|
_BUF_SIZE = int(16 / charType.size());
|
||||||
|
d.check(0 <= size and size <= alloc and alloc <= 100*1000*1000)
|
||||||
|
if _BUF_SIZE <= alloc:
|
||||||
|
data = val['_Bx']['_Ptr'].pointer()
|
||||||
|
else:
|
||||||
|
data = val['_Bx']['_Buf'].address()
|
||||||
|
d.putCharArrayHelper(data, size, charType, format)
|
||||||
|
|
||||||
def qdump__std____1__string(d, value):
|
def qdump__std____1__string(d, value):
|
||||||
firstByte = value.split('b')[0]
|
firstByte = value.split('b')[0]
|
||||||
|
Reference in New Issue
Block a user