diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 4fb782d8fa10a336719e8b0906d919c0f269888a..1c2f63473a21b988cca24a3e50f1dd86b0047bcf 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -1568,7 +1568,7 @@ class Dumper(DumperBase): result += ']' return result - def threadname(self, maximalStackDepth): + def threadname(self, maximalStackDepth, objectPrivateType): e = gdb.selected_frame() out = "" ns = self.qtNamespace() @@ -1583,8 +1583,7 @@ class Dumper(DumperBase): or e.name() == "_ZN14QThreadPrivate5startEPv@4": try: thrptr = e.read_var("thr").dereference() - obtype = self.lookupType(ns + "QObjectPrivate").pointer() - d_ptr = thrptr["d_ptr"]["d"].cast(obtype).dereference() + d_ptr = thrptr["d_ptr"]["d"].cast(objectPrivateType).dereference() try: objectName = d_ptr["objectName"] except: # Qt 5 @@ -1614,10 +1613,11 @@ class Dumper(DumperBase): oldthread = gdb.selected_thread() if oldthread: try: + objectPrivateType = gdb.lookup_type(ns + "QObjectPrivate").pointer() inferior = self.selectedInferior() for thread in inferior.threads(): thread.switch() - out += self.threadname(maximalStackDepth) + out += self.threadname(maximalStackDepth, objectPrivateType) except: pass oldthread.switch()