loadBreakpoints();
}
+void BreakHandler::removeSessionData()
+{
+ Iterator it = m_storage.begin(), et = m_storage.end();
+ for ( ; it != et; ++it)
+ it->destroyMarker();
+ m_storage.clear();
+ layoutChanged();
+}
+
void BreakHandler::breakByFunction(const QString &functionName)
{
// One breakpoint per function is enough for now. This does not handle
QIcon BreakHandler::icon(BreakpointId id) const
{
ConstIterator it = m_storage.find(id);
- QTC_ASSERT(it != m_storage.end(), return pendingBreakPointIcon());
+ QTC_ASSERT(it != m_storage.end(),
+ qDebug() << "NO ICON FOR ID" << id;
+ return pendingBreakPointIcon());
return it->icon();
}
for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) {
if (DebuggerRunControl *runControl = m_snapshotHandler->at(i)) {
DebuggerEngine *engine = runControl->engine();
- engine->watchHandler()->synchronizeWatchers();
+ engine->watchHandler()->updateWatchers();
}
}
}
{
m_breakHandler->loadSessionData();
dummyEngine()->watchHandler()->loadSessionData();
- synchronizeWatchers();
}
void DebuggerPluginPrivate::aboutToUnloadSession()
{
+ m_breakHandler->removeSessionData();
// Stop debugging the active project when switching sessions.
// Note that at startup, session switches may occur, which interfere
// with command-line debugging startup.
void WatchHandler::watchExpression(const QString &exp)
{
QTC_ASSERT(m_engine, return);
- // Do not insert multiple placeholders.
- if (exp.isEmpty() && m_watcherNames.contains(QByteArray()))
+ // Do not insert the same entry more then once.
+ if (m_watcherNames.value(exp.toLatin1()))
return;
// FIXME: 'exp' can contain illegal characters
if (item->exp == exp) {
m_watchers->destroyItem(item);
saveWatchers();
+ updateWatchersWindow();
+ emitAllChanged();
break;
}
}
- emitAllChanged();
- updateWatchersWindow();
}
void WatchHandler::updateWatchersWindow()
debuggerCore()->updateWatchersWindow();
}
-void WatchHandler::updateWatchers()
-{
- // Copy over all watchers and mark all watchers as incomplete.
- foreach (const QByteArray &exp, m_watcherNames.keys()) {
- WatchData data;
- data.iname = watcherName(exp);
- data.setAllNeeded();
- data.name = exp;
- data.exp = exp;
- insertData(data);
- }
-}
-
-void WatchHandler::loadWatchers()
-{
- m_watcherNames.clear();
- QVariant value = debuggerCore()->sessionValue("Watchers");
- foreach (const QString &exp, value.toStringList())
- watchExpression(exp);
-}
-
QStringList WatchHandler::watchedExpressions()
{
// Filter out invalid watchers.
void WatchHandler::loadSessionData()
{
- loadWatchers();
loadTypeFormats();
+ m_watcherNames.clear();
+ QVariant value = debuggerCore()->sessionValue("Watchers");
+ foreach (WatchItem *item, m_watchers->rootItem()->children)
+ m_watchers->destroyItem(item);
+ foreach (const QString &exp, value.toStringList())
+ watchExpression(exp);
+ updateWatchersWindow();
+ emitAllChanged();
}
-void WatchHandler::synchronizeWatchers()
+void WatchHandler::updateWatchers()
{
+ foreach (WatchItem *item, m_watchers->rootItem()->children)
+ m_watchers->destroyItem(item);
+ // Copy over all watchers and mark all watchers as incomplete.
foreach (const QByteArray &exp, m_watcherNames.keys()) {
WatchData data;
data.iname = watcherName(exp);
- data.setAllUnneeded();
+ data.setAllNeeded();
data.name = exp;
data.exp = exp;
insertData(data);