diff options
-rw-r--r-- | share/qtcreator/debugger/cdbbridge.py | 14 | ||||
-rw-r--r-- | src/libs/qtcreatorcdbext/pycdbextmodule.cpp | 7 |
2 files changed, 8 insertions, 13 deletions
diff --git a/share/qtcreator/debugger/cdbbridge.py b/share/qtcreator/debugger/cdbbridge.py index e34b8ed48e..7897028b64 100644 --- a/share/qtcreator/debugger/cdbbridge.py +++ b/share/qtcreator/debugger/cdbbridge.py @@ -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()') diff --git a/src/libs/qtcreatorcdbext/pycdbextmodule.cpp b/src/libs/qtcreatorcdbext/pycdbextmodule.cpp index 2b807d18ac..ef47f38368 100644 --- a/src/libs/qtcreatorcdbext/pycdbextmodule.cpp +++ b/src/libs/qtcreatorcdbext/pycdbextmodule.cpp @@ -106,12 +106,13 @@ static PyObject *cdbext_parseAndEvaluate(PyObject *, PyObject *args) // -> Value ULONG oldExpressionSyntax; control->GetExpressionSyntax(&oldExpressionSyntax); control->SetExpressionSyntax(DEBUG_EXPR_CPLUSPLUS); - DEBUG_VALUE value; - HRESULT hr = control->Evaluate(expr, DEBUG_VALUE_INT64, &value, NULL); + IDebugSymbolGroup2 *symbolGroup = CurrentSymbolGroup::get(); + ULONG index = DEBUG_ANY_ID; + HRESULT hr = symbolGroup->AddSymbol(expr, &index); control->SetExpressionSyntax(oldExpressionSyntax); if (FAILED(hr)) Py_RETURN_NONE; - return Py_BuildValue("K", value.I64); + return createPythonObject(PyValue(index, symbolGroup)); } static PyObject *cdbext_resolveSymbol(PyObject *, PyObject *args) // -> Value |