Debugger: improve evaluate expression with cdb

Replace Evaluate with AddSymbol and create a PyValue representing
that expression

Change-Id: Ibb8ab70c41df81e9d7d683b633a070caa03036d3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2017-12-13 14:20:49 +01:00
parent 83e01b4777
commit b2052561cc
2 changed files with 8 additions and 13 deletions

View File

@@ -225,13 +225,7 @@ class Dumper(DumperBase):
return None
def parseAndEvaluate(self, exp):
val = cdbext.parseAndEvaluate(exp)
if val is None:
return None
value = self.Value(self)
value.type = self.lookupType('void *')
value.ldata = val.to_bytes(8, sys.byteorder)
return value
return self.fromNativeValue(cdbext.parseAndEvaluate(exp))
def isWindowsTarget(self):
return True
@@ -316,12 +310,12 @@ class Dumper(DumperBase):
if namespaceIndex > 0:
namespace = name[:namespaceIndex + 2]
self.qtNamespace = lambda: namespace
self.qtCustomEventFunc = cdbext.parseAndEvaluate('%s!%sQObject::customEvent'
% (self.qtCoreModuleName(), namespace))
self.qtCustomEventFunc = self.parseAndEvaluate('%s!%sQObject::customEvent'
% (self.qtCoreModuleName(), namespace)).address()
return namespace
def qtVersion(self):
qtVersion = self.findValueByExpression('((void**)&%s)[2]' % self.qtHookDataSymbolName())
qtVersion = self.parseAndEvaluate('((void**)&%s)[2]' % self.qtHookDataSymbolName()).integer()
if qtVersion is None and self.qtCoreModuleName() is not None:
try:
versionValue = cdbext.call(self.qtCoreModuleName() + '!qVersion()')