aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2023-08-23 10:56:26 +0200
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2023-08-28 11:41:08 +0000
commiteb17f4c2bf091c81860022c42d6c85c0292fe7a7 (patch)
tree930e379b1e79e62d400abc832c46988482a7ed51
parent1a43983ea63cd675c1ecfbd673618b391c5a03bb (diff)
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>
-rw-r--r--share/qtcreator/debugger/libcpp_stdtypes.py11
1 files changed, 5 insertions, 6 deletions
diff --git a/share/qtcreator/debugger/libcpp_stdtypes.py b/share/qtcreator/debugger/libcpp_stdtypes.py
index 28288bb89f..23b26f798e 100644
--- a/share/qtcreator/debugger/libcpp_stdtypes.py
+++ b/share/qtcreator/debugger/libcpp_stdtypes.py
@@ -283,13 +283,12 @@ def std_1_string_dumper_v1(d, value):
charType = value['__l']['__data_'].dereference().type
D = None
- try: # LLDB
+ if d.isLldb:
D = value[0][0][0][0]
- except: # GDB
- try: # std::string
- D = value[0].members(True)[0][0][0]
- except: # std::u16string, std::u32string
- D = value[2].members(True)[0][0][0]
+ elif d.isGdb:
+ D = value["__r_"].members(True)[0][0][0]
+ else:
+ raise Exception("Unknown debugger (neither gdb nor lldb)")
layoutDecider = D[0][0]
if not layoutDecider: