forked from qt-creator/qt-creator
Debugger: Simplify qtHookData access in dumper
Change-Id: I14b7ecb5fbe1e6b2a2c587aa7dcb5ef18e3cb9f3 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -2594,9 +2594,19 @@ class DumperBase:
|
|||||||
if metaObjectPtr:
|
if metaObjectPtr:
|
||||||
self.putQObjectGuts(value, metaObjectPtr)
|
self.putQObjectGuts(value, metaObjectPtr)
|
||||||
|
|
||||||
|
def symbolAddress(self, symbolName):
|
||||||
|
return self.parseAndEvaluate("(size_t)&" + symbolName).pointer()
|
||||||
|
|
||||||
def qtTypeInfoVersion(self):
|
def qtTypeInfoVersion(self):
|
||||||
return 11 # FIXME
|
addr = self.symbolAddress("qtHookData")
|
||||||
|
if addr:
|
||||||
|
# Only available with Qt 5.3+
|
||||||
|
(hookVersion, x, x, x, x, x, tiVersion) = self.split('ppppppp', addr)
|
||||||
|
#warn("HOOK: %s TI: %s" % (hookVersion, tiVersion))
|
||||||
|
if hookVersion >= 3:
|
||||||
|
self.qtTypeInfoVersion = lambda: tiVersion
|
||||||
|
return tiVersion
|
||||||
|
return None
|
||||||
|
|
||||||
def lookupType(self, typestring):
|
def lookupType(self, typestring):
|
||||||
return self.fromNativeType(self.lookupNativeType(typestring))
|
return self.fromNativeType(self.lookupNativeType(typestring))
|
||||||
|
@@ -764,19 +764,6 @@ class Dumper(DumperBase):
|
|||||||
# Use fallback until we have a better answer.
|
# Use fallback until we have a better answer.
|
||||||
return self.fallbackQtVersion
|
return self.fallbackQtVersion
|
||||||
|
|
||||||
def qtTypeInfoVersion(self):
|
|
||||||
try:
|
|
||||||
# Only available with Qt 5.3+
|
|
||||||
hookVersion = int(str(gdb.parse_and_eval("((void**)&qtHookData)[0]")), 16)
|
|
||||||
tiVersion = int(str(gdb.parse_and_eval("((void**)&qtHookData)[6]")), 16)
|
|
||||||
#warn("HOOK: %s TI: %s" % (hookVersion, tiVersion))
|
|
||||||
if hookVersion >= 3:
|
|
||||||
self.qtTypeInfoVersion = lambda: tiVersion
|
|
||||||
return tiVersion
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
return None
|
|
||||||
|
|
||||||
def isQt3Support(self):
|
def isQt3Support(self):
|
||||||
if self.qtVersion() >= 0x050000:
|
if self.qtVersion() >= 0x050000:
|
||||||
return False
|
return False
|
||||||
|
@@ -557,26 +557,6 @@ class Dumper(DumperBase):
|
|||||||
self.qtVersionAndNamespace()
|
self.qtVersionAndNamespace()
|
||||||
return self.qtVersionAndNamespace()[1]
|
return self.qtVersionAndNamespace()[1]
|
||||||
|
|
||||||
def qtTypeInfoVersion(self):
|
|
||||||
try:
|
|
||||||
thread = self.currentThread()
|
|
||||||
frame = thread.GetFrameAtIndex(0)
|
|
||||||
#options = lldb.SBExpressionOptions()
|
|
||||||
exp = "((quintptr**)&qtHookData)[0]"
|
|
||||||
#hookVersion = lldb.target.EvaluateExpression(exp, options).GetValueAsUnsigned()
|
|
||||||
hookVersion = frame.EvaluateExpression(exp).GetValueAsUnsigned()
|
|
||||||
exp = "((quintptr**)&qtHookData)[6]"
|
|
||||||
#warn("EXP: %s" % exp)
|
|
||||||
#tiVersion = lldb.target.EvaluateExpression(exp, options).GetValueAsUnsigned()
|
|
||||||
tiVersion = frame.EvaluateExpression(exp).GetValueAsUnsigned()
|
|
||||||
#warn("HOOK: %s TI: %s" % (hookVersion, tiVersion))
|
|
||||||
if hookVersion >= 3:
|
|
||||||
self.qtTypeInfoVersion = lambda: tiVersion
|
|
||||||
return tiVersion
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
return None
|
|
||||||
|
|
||||||
def ptrSize(self):
|
def ptrSize(self):
|
||||||
return self.target.GetAddressByteSize()
|
return self.target.GetAddressByteSize()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user