Debugger: Simplify qtHookData access in dumper

Change-Id: I14b7ecb5fbe1e6b2a2c587aa7dcb5ef18e3cb9f3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2016-09-23 17:23:41 +02:00
committed by hjk
parent 59e7528360
commit c7305abf26
3 changed files with 11 additions and 34 deletions

View File

@@ -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))

View File

@@ -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

View File

@@ -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()