diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index 8d8475a5ad7de4277990ea8a41d357dfe4e3d6d7..520bc5110fb213c8cb80e2965b0290e14b760279 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -705,7 +705,7 @@ void CdbEngine::updateWatchData(const WatchData &incomplete, const WatchUpdateFl
 
     if (incomplete.iname.startsWith("watch.")) {
         WatchData watchData = incomplete;
-        evaluateWatcher(&watchData);
+        watchData.setError(tr("<not supported>"));
         watchHandler()->insertData(watchData);
         return;
     }
diff --git a/src/plugins/debugger/sessionengine.cpp b/src/plugins/debugger/sessionengine.cpp
index 9914ff33ed87c3dc15171573c7d1974c888fab0a..a822df35229341bdedd5741e52d5ded782d90413 100644
--- a/src/plugins/debugger/sessionengine.cpp
+++ b/src/plugins/debugger/sessionengine.cpp
@@ -30,6 +30,7 @@
 #include "sessionengine.h"
 #include "breakhandler.h"
 #include "watchhandler.h"
+#include "debuggerconstants.h"
 
 #include <utils/qtcassert.h>
 
@@ -64,6 +65,12 @@ void SessionEngine::saveSessionData()
     breakHandler()->saveSessionData();
 }
 
+unsigned SessionEngine::debuggerCapabilities() const
+{
+    return DebuggerEngine::debuggerCapabilities()
+            | AddWatcherCapability | WatchpointCapability;
+}
+
 } // namespace Internal
 } // namespace Debugger
 
diff --git a/src/plugins/debugger/sessionengine.h b/src/plugins/debugger/sessionengine.h
index 9bdc833bc1dc4bed0bb6699a179603b874717d9c..c00d6f52c9027dbe18fa01dd2f6b8d45700c2ee2 100644
--- a/src/plugins/debugger/sessionengine.h
+++ b/src/plugins/debugger/sessionengine.h
@@ -51,6 +51,7 @@ public:
     virtual void shutdownEngine() {}
     virtual void shutdownInferior() {}
     virtual void executeDebuggerCommand(const QString &command);
+    virtual unsigned debuggerCapabilities() const;
 
     virtual bool isSessionEngine() const { return true; }
 
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 1c5b6cdad9739a58f04e9d0adfc9bbddf2288509..00dd7c3a4b7c6697b21d1444381e7d9a05b2dce8 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -704,6 +704,9 @@ QVariant WatchModel::data(const QModelIndex &idx, int role) const
 
         case EngineActionsEnabledRole:
             return engine()->debuggerActionsEnabled();
+
+       case EngineStateRole:
+            return QVariant(int(engine()->state()));
     }
 
     const WatchItem *item = watchItem(idx);
diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp
index 878b0a11db404dceeb1e947ea7091c4fb197f1f4..253f41e912db74913b82193d5d3feeb472eadea4 100644
--- a/src/plugins/debugger/watchwindow.cpp
+++ b/src/plugins/debugger/watchwindow.cpp
@@ -296,6 +296,7 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
     const unsigned engineCapabilities = modelData(EngineCapabilitiesRole).toUInt();
     const bool canHandleWatches =
         actionsEnabled && (engineCapabilities & AddWatcherCapability);
+    const DebuggerState state = static_cast<DebuggerState>(modelData(EngineStateRole).toInt());
 
     QMenu menu;
     QAction *actInsertNewWatchItem = menu.addAction(tr("Insert New Watch Item"));
@@ -352,10 +353,12 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
     QAction *actWatchExpression = new QAction(actionName, &menu);
     actWatchExpression->setEnabled(canHandleWatches && !exp.isEmpty());
 
+    // Can remove watch if engine can handle it or session engine.
     actionName = exp.isEmpty() ? tr("Remove Watch Expression")
         : tr("Remove Watch Expression \"%1\"").arg(exp);
     QAction *actRemoveWatchExpression = new QAction(actionName, &menu);
-    actRemoveWatchExpression->setEnabled(canHandleWatches && !exp.isEmpty());
+    actRemoveWatchExpression->setEnabled((canHandleWatches || state == DebuggerNotReady)
+                                         && !exp.isEmpty());
 
     if (m_type == LocalsType)
         menu.addAction(actWatchExpression);