Debugger: Simplify removal of outdated L&E items

This removes the need of bookkeeping on the engine side. It's
basically a kind of mark-and-sweep: On update begin mark items
that are expected to change as outdated, while data arrives, undo
that marking, and update end remove all remaining marked items.

Change-Id: I739b84869033d511d5c9a80605c079e87ef4f6a7
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
hjk
2015-07-06 09:46:08 +02:00
parent 1587c171d6
commit d48ac14fba
10 changed files with 55 additions and 42 deletions

View File

@@ -1340,7 +1340,7 @@ void CdbEngine::doUpdateLocals(const UpdateParameters &updateParameters)
return;
}
watchHandler()->notifyUpdateStarted();
watchHandler()->notifyUpdateStarted(updateParameters.partialVariables());
/* Watchers: Forcibly discard old symbol group as switching from
* thread 0/frame 0 -> thread 1/assembly -> thread 0/frame 0 will otherwise re-use it
@@ -1775,7 +1775,6 @@ void CdbEngine::handleRegistersExt(const CdbResponse &response)
void CdbEngine::handleLocals(const CdbResponse &response, bool partialUpdate)
{
watchHandler()->notifyUpdateFinished();
if (response.success) {
if (boolSetting(VerboseLog))
showMessage(QLatin1String("Locals: ") + QString::fromLatin1(response.extensionReply), LogDebug);
@@ -1796,6 +1795,7 @@ void CdbEngine::handleLocals(const CdbResponse &response, bool partialUpdate)
} else {
showMessage(QString::fromLatin1(response.errorMessage), LogWarning);
}
watchHandler()->notifyUpdateFinished();
}
void CdbEngine::handleExpandLocals(const CdbResponse &response)