diff --git a/src/plugins/debugger/cdb/cdbcore.pri b/src/plugins/debugger/cdb/cdbcore.pri
index e42c1e513cc17d42e09f67075b2354813bdec70e..4fb6739dff50ae1442727317cb49c8289a3bc182 100644
--- a/src/plugins/debugger/cdb/cdbcore.pri
+++ b/src/plugins/debugger/cdb/cdbcore.pri
@@ -3,8 +3,6 @@
 
 # FIXME
 CDB_PATH=""
-false {
-
 win32 {
 contains(QMAKE_CXX, cl) {
 
@@ -54,5 +52,3 @@ LIBS+=-lpsapi
 } # exists($$CDB_PATH)
 } # (QMAKE_CXX, cl)
 } # win32
-
-} # false
diff --git a/src/plugins/debugger/cdb/cdbdebugengine.cpp b/src/plugins/debugger/cdb/cdbdebugengine.cpp
index 8b790bdb66088311ea4e0e65dd3c91622ade7d35..44799a3f163652b487f8125a6d2a47c9b7e17068 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine.cpp
+++ b/src/plugins/debugger/cdb/cdbdebugengine.cpp
@@ -61,6 +61,7 @@
 #include <texteditor/itexteditor.h>
 #include <utils/savedaction.h>
 #include <utils/checkablemessagebox.h>
+#include <projectexplorer/toolchain.h>
 
 #include <QtCore/QDebug>
 #include <QtCore/QTimer>
@@ -206,7 +207,7 @@ void CdbDebugEnginePrivate::cleanStackTrace()
 }
 
 CdbDebugEngine::CdbDebugEngine(const DebuggerStartParameters &startParameters) :
-    DebuggerEngine(startParamters),
+    DebuggerEngine(startParameters),
     m_d(new CdbDebugEnginePrivate(this))
 {
     m_d->m_consoleStubProc.setMode(Utils::ConsoleProcess::Suspend);
@@ -374,8 +375,8 @@ void CdbDebugEngine::startupChecks()
 
 void CdbDebugEngine::startDebugger()
 {
-    QTC_ASSERT(runControl(), return);
-    const DebuggerStartParameters &sp = runControl()->sp();
+    setState(EngineStarting, Q_FUNC_INFO, __LINE__);
+    const DebuggerStartParameters &sp = startParameters();
     if (debugCDBExecution)
         qDebug() << "startDebugger";
     CdbCore::BreakPoint::clearNormalizeFileNameCache();
@@ -514,7 +515,7 @@ void CdbDebugEnginePrivate::processCreatedAttached(ULONG64 processHandle, ULONG6
     // the exception to be delivered to the debugger
     // Also, see special handling in slotModulesLoaded().
     if (m_mode == AttachCrashedExternal) {
-        const QString crashParameter = m_engine->runControl()->sp().crashParameter;
+        const QString crashParameter = m_engine->startParameters().crashParameter;
         if (!crashParameter.isEmpty()) {
             ULONG64 evtNr = crashParameter.toULongLong();
             const HRESULT hr = interfaces().debugControl->SetNotifyEventHandle(evtNr);
@@ -1125,7 +1126,7 @@ bool CdbDebugEnginePrivate::attemptBreakpointSynchronization(QString *errorMessa
     QStringList warnings;
     const bool ok = synchronizeBreakPoints(interfaces().debugControl,
                                            interfaces().debugSymbols,
-                                           breakHandler(),
+                                           m_engine->breakHandler(),
                                            errorMessage, &warnings);
     if (const int warningsCount = warnings.size())
         for (int w = 0; w < warningsCount; w++)
@@ -1255,7 +1256,7 @@ void CdbDebugEngine::slotConsoleStubStarted()
     QString errorMessage;
     if (startAttachDebugger(appPid, AttachExternal, &errorMessage)) {
         m_d->startWatchTimer();
-        runControl()->notifyInferiorPid(appPid);
+        notifyInferiorPid(appPid);
     } else {
         QMessageBox::critical(DebuggerUISwitcher::instance()->mainWindow(), tr("Debugger Error"), errorMessage);
     }
@@ -1632,6 +1633,26 @@ void addCdbOptionPages(QList<Core::IOptionsPage *> *opts)
     opts->push_back(theOptionsPage);
 }
 
+bool checkCdbConfiguration(int toolChainI, QString *errorMsg, QString *settingsPage)
+{
+    const ProjectExplorer::ToolChain::ToolChainType toolChain = static_cast<ProjectExplorer::ToolChain::ToolChainType>(toolChainI);
+    switch (toolChain) {
+    case ProjectExplorer::ToolChain::MinGW: // Do our best
+    case ProjectExplorer::ToolChain::MSVC:
+    case ProjectExplorer::ToolChain::WINCE:
+    case ProjectExplorer::ToolChain::OTHER:
+    case ProjectExplorer::ToolChain::UNKNOWN:
+    case ProjectExplorer::ToolChain::INVALID:
+        break;
+    default:
+        *errorMsg = CdbDebugEngine::tr("The CDB debug engine does not support the '%1").
+                    arg(ProjectExplorer::ToolChain::toolChainName(toolChain));
+        *settingsPage = CdbOptionsPage::settingsId();
+        return false;
+    }
+    return true;
+}
+
 } // namespace Internal
 } // namespace Debugger
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 5ac3aaf89b37619fca8603253575b6ce295b1178..7757fd7d5f6ba6f2668314ccfce54756eda610d6 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -960,6 +960,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(DebuggerPlugin *plugin)
 
     m_debugMode = 0;
     m_uiSwitcher = 0;
+    m_state = DebuggerNotReady;
 }
 
 bool DebuggerPluginPrivate::initialize(const QStringList &arguments, QString *errorMessage)