diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index cab0f62cc630d99163c132f7839e661d6dcc1d62..8289e416fc64055ccf332a2164fb13f2b7174290 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -467,6 +467,37 @@ void AttachRemoteParameters::clear() attachTarget.clear(); } + +/////////////////////////////////////////////////////////////////////// +// +// DummyEngine +// +/////////////////////////////////////////////////////////////////////// + +class DummyEngine : public DebuggerEngine +{ + Q_OBJECT + +public: + DummyEngine() : DebuggerEngine(DebuggerStartParameters()) {} + virtual ~DummyEngine() {} + + virtual void setupEngine() {} + virtual void setupInferior() {} + virtual void runEngine() {} + virtual void shutdownEngine() {} + virtual void shutdownInferior() {} + virtual void executeDebuggerCommand(const QString &) {} + virtual unsigned debuggerCapabilities() const { return 0; } +}; + +static DebuggerEngine *dummyEngine() +{ + static DummyEngine dummy; + return &dummy; +} + + /////////////////////////////////////////////////////////////////////// // // DebugMode @@ -2463,30 +2494,10 @@ void DebuggerPluginPrivate::startDebugger(RunControl *rc) } -class DummyEngine : public DebuggerEngine -{ - Q_OBJECT - -public: - DummyEngine() : DebuggerEngine(DebuggerStartParameters()) {} - virtual ~DummyEngine() {} - - virtual void setupEngine() {} - virtual void setupInferior() {} - virtual void runEngine() {} - virtual void shutdownEngine() {} - virtual void shutdownInferior() {} - virtual void executeDebuggerCommand(const QString &) {} - virtual unsigned debuggerCapabilities() const { return 0; } -}; - - void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine) { - static DummyEngine dummyEngine; - if (!engine) - engine = &dummyEngine; + engine = dummyEngine(); if (m_currentEngine == engine) return; @@ -2914,7 +2925,7 @@ void DebuggerPluginPrivate::activateDebugMode() void DebuggerPluginPrivate::sessionLoaded() { m_breakHandler->loadSessionData(); - WatchHandler::loadSessionData(); + dummyEngine()->watchHandler()->loadSessionData(); synchronizeWatchers(); } @@ -2931,7 +2942,7 @@ void DebuggerPluginPrivate::aboutToUnloadSession() void DebuggerPluginPrivate::aboutToSaveSession() { - WatchHandler::saveSessionData(); + dummyEngine()->watchHandler()->loadSessionData(); m_breakHandler->saveSessionData(); } diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index d88296c864a89773c3fc45bd76869da72dcf0b27..13d024ae307afa5510c713c4731b851f8b3ea73c 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1492,10 +1492,10 @@ void WatchHandler::updateWatchers() void WatchHandler::loadWatchers() { + m_watcherNames.clear(); QVariant value = debuggerCore()->sessionValue("Watchers"); foreach (const QString &exp, value.toStringList()) - m_watcherNames[exp.toLatin1()] = watcherCounter++; - + watchExpression(exp); //qDebug() << "LOAD WATCHERS: " << m_watchers; } diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h index 2b5f8bcc76b98f42bf6cd68a322ac190cae44cf5..cfdc9fc0cbd9318eabfda4f0421b4fe2fee8227c 100644 --- a/src/plugins/debugger/watchhandler.h +++ b/src/plugins/debugger/watchhandler.h @@ -155,8 +155,8 @@ public: const WatchData *findItem(const QByteArray &iname) const; QModelIndex itemIndex(const QByteArray &iname) const; - static void loadSessionData(); - static void saveSessionData(); + void loadSessionData(); + void saveSessionData(); void removeTooltip(); bool isExpandedIName(const QByteArray &iname) const @@ -182,8 +182,8 @@ public: private: friend class WatchModel; - static void loadWatchers(); - static void saveWatchers(); + void loadWatchers(); + void saveWatchers(); static void loadTypeFormats(); static void saveTypeFormats();