forked from qt-creator/qt-creator
Debugger: Pass uninitialized variables to the python dumpers
Reduces accessing uninitialized memory Change-Id: I025e9070b9b17a806237619b484cb27230e7f494 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -125,7 +125,6 @@ class Dumper(DumperBase):
|
|||||||
pass
|
pass
|
||||||
val.isBaseClass = val.name == val.type.name
|
val.isBaseClass = val.name == val.type.name
|
||||||
val.nativeValue = nativeValue
|
val.nativeValue = nativeValue
|
||||||
val.lIsInScope = True
|
|
||||||
val.laddress = nativeValue.address()
|
val.laddress = nativeValue.address()
|
||||||
return val
|
return val
|
||||||
|
|
||||||
@@ -440,7 +439,9 @@ class Dumper(DumperBase):
|
|||||||
|
|
||||||
variables = []
|
variables = []
|
||||||
for val in cdbext.listOfLocals(self.partialVariable):
|
for val in cdbext.listOfLocals(self.partialVariable):
|
||||||
variables.append(self.fromNativeValue(val))
|
dumperVal = self.fromNativeValue(val)
|
||||||
|
dumperVal.lIsInScope = not dumperVal.name in self.uninitialized
|
||||||
|
variables.append(dumperVal)
|
||||||
|
|
||||||
self.handleLocals(variables)
|
self.handleLocals(variables)
|
||||||
self.handleWatches(args)
|
self.handleWatches(args)
|
||||||
|
|||||||
@@ -317,6 +317,8 @@ class DumperBase:
|
|||||||
self.nativeMixed = int(args.get('nativemixed', '0'))
|
self.nativeMixed = int(args.get('nativemixed', '0'))
|
||||||
self.autoDerefPointers = int(args.get('autoderef', '0'))
|
self.autoDerefPointers = int(args.get('autoderef', '0'))
|
||||||
self.partialVariable = args.get('partialvar', '')
|
self.partialVariable = args.get('partialvar', '')
|
||||||
|
self.uninitialized = args.get('uninitialized', [])
|
||||||
|
self.uninitialized = list(map(lambda x: self.hexdecode(x), self.uninitialized))
|
||||||
self.partialUpdate = int(args.get('partial', '0'))
|
self.partialUpdate = int(args.get('partial', '0'))
|
||||||
self.fallbackQtVersion = 0x50200
|
self.fallbackQtVersion = 0x50200
|
||||||
#warn('NAMESPACE: "%s"' % self.qtNamespace())
|
#warn('NAMESPACE: "%s"' % self.qtNamespace())
|
||||||
|
|||||||
@@ -1238,6 +1238,13 @@ void CdbEngine::doUpdateLocals(const UpdateParameters &updateParameters)
|
|||||||
cmd.arg("stringcutoff", action(MaximalStringLength)->value().toString());
|
cmd.arg("stringcutoff", action(MaximalStringLength)->value().toString());
|
||||||
cmd.arg("displaystringlimit", action(DisplayStringLimit)->value().toString());
|
cmd.arg("displaystringlimit", action(DisplayStringLimit)->value().toString());
|
||||||
|
|
||||||
|
if (boolSetting(UseCodeModel)) {
|
||||||
|
QStringList uninitializedVariables;
|
||||||
|
getUninitializedVariables(Internal::cppCodeModelSnapshot(),
|
||||||
|
frame.function, frame.file, frame.line, &uninitializedVariables);
|
||||||
|
cmd.arg("uninitialized", uninitializedVariables);
|
||||||
|
}
|
||||||
|
|
||||||
cmd.callback = [this](const DebuggerResponse &response) {
|
cmd.callback = [this](const DebuggerResponse &response) {
|
||||||
if (response.resultClass == ResultDone) {
|
if (response.resultClass == ResultDone) {
|
||||||
showMessage(response.data.toString(), LogMisc);
|
showMessage(response.data.toString(), LogMisc);
|
||||||
|
|||||||
Reference in New Issue
Block a user