aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@qt.io>2020-08-27 13:10:38 +0200
committerDominik Holland <dominik.holland@qt.io>2020-09-11 08:11:21 +0000
commita535196c418a7054c2fb1524ff1df9afb0961166 (patch)
tree9ebeb0393c0232679f5604469d37ece8045422da /share
parente35af70d9888eb7f30846d62eb32e02dbd94b10f (diff)
Add support for multiple Qt versions in "Load QML Stack"
Enable the functionality for cdb again. Change-Id: I75405f830dd208cc110d6682a45beedf2f4199cc Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/gdbbridge.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py
index c81bca1dd5..824f4c50f7 100644
--- a/share/qtcreator/debugger/gdbbridge.py
+++ b/share/qtcreator/debugger/gdbbridge.py
@@ -1303,6 +1303,7 @@ class Dumper(DumperBase):
gdb.execute('continue')
def fetchStack(self, args):
+
def fromNativePath(string):
return string.replace('\\', '/')
@@ -1319,7 +1320,11 @@ class Dumper(DumperBase):
frame = gdb.newest_frame()
ns = self.qtNamespace()
needle = self.qtNamespace() + 'QV4::ExecutionEngine'
- pat = '%sqt_v4StackTraceForEngine((void*)0x%x)'
+ pats = [
+ '{0}qt_v4StackTraceForEngine((void*)0x{1:x})',
+ '{0}qt_v4StackTrace((({0}QV4::ExecutionEngine *)0x{1:x})->currentContext())',
+ '{0}qt_v4StackTrace((({0}QV4::ExecutionEngine *)0x{1:x})->currentContext)',
+ ]
done = False
while i < limit and frame and not done:
block = None
@@ -1336,8 +1341,19 @@ class Dumper(DumperBase):
dereftype = typeobj.target().unqualified()
if dereftype.name == needle:
addr = toInteger(value)
- expr = pat % (ns, addr)
- res = str(gdb.parse_and_eval(expr))
+ res = None
+ for pat in pats:
+ try:
+ expr = pat.format(ns, addr)
+ res = str(gdb.parse_and_eval(expr))
+ break
+ except:
+ continue
+
+ if res is None:
+ done = True
+ break
+
pos = res.find('"stack=[')
if pos != -1:
res = res[pos + 8:-2]