CDB: Reseting locals and watches when switching frames.

Change-Id: I9fe17a0776a839976a43c72d231658ed6271684b
Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
David Schulz
2014-06-05 08:45:36 +02:00
committed by hjk
parent 40b31335ce
commit 9ed5e8080d

View File

@@ -1939,6 +1939,11 @@ void CdbEngine::handleLocals(const CdbExtensionCommandPtr &reply)
if (debuggerCore()->boolSetting(VerboseLog))
showMessage(QLatin1String("Locals: ") + QString::fromLatin1(reply->reply), LogDebug);
QList<WatchData> watchData;
WatchHandler *handler = watchHandler();
if (flags & LocalsUpdateForNewFrame) {
watchData.append(*handler->findData("local"));
watchData.append(*handler->findData("watch"));
}
GdbMi root;
root.fromString(reply->reply);
QTC_ASSERT(root.isList(), return);
@@ -1949,7 +1954,7 @@ void CdbEngine::handleLocals(const CdbExtensionCommandPtr &reply)
WatchData dummy;
dummy.iname = child["iname"].data();
dummy.name = QLatin1String(child["name"].data());
parseWatchData(watchHandler()->expandedINames(), dummy, child, &watchData);
parseWatchData(handler->expandedINames(), dummy, child, &watchData);
}
// Fix the names of watch data.
for (int i =0; i < watchData.size(); ++i) {
@@ -1960,7 +1965,7 @@ void CdbEngine::handleLocals(const CdbExtensionCommandPtr &reply)
watchData[i].name = it.value();
}
}
watchHandler()->insertData(watchData);
handler->insertData(watchData);
if (debugLocals) {
QDebug nsp = qDebug().nospace();
nsp << "Obtained " << watchData.size() << " items:\n";