Debugger: Improve libc++ std::string dumper

Use isLldb and isGdb instead of exception.
Uses name based lookup in case of gdb instead of try/except

Fixes: QTCREATORBUG-29526
Change-Id: I6c3aa94503a519331395bd4249c6bf6488c8333f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Marcus Tillmanns
2023-08-23 10:56:26 +02:00
parent 1a43983ea6
commit eb17f4c2bf

View File

@@ -283,13 +283,12 @@ def std_1_string_dumper_v1(d, value):
charType = value['__l']['__data_'].dereference().type charType = value['__l']['__data_'].dereference().type
D = None D = None
try: # LLDB if d.isLldb:
D = value[0][0][0][0] D = value[0][0][0][0]
except: # GDB elif d.isGdb:
try: # std::string D = value["__r_"].members(True)[0][0][0]
D = value[0].members(True)[0][0][0] else:
except: # std::u16string, std::u32string raise Exception("Unknown debugger (neither gdb nor lldb)")
D = value[2].members(True)[0][0][0]
layoutDecider = D[0][0] layoutDecider = D[0][0]
if not layoutDecider: if not layoutDecider: