diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 5a7b1b7b33f3e27ef35e9ad1c6221f83a8e64f0a..659ec059c853a20fa333967aa095689f67e25cfd 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1790,7 +1790,9 @@ void DebuggerPluginPrivate::startExternalApplication()
         && (sp.processArgs.front() == _("@tcf@") || sp.processArgs.front() == _("@sym@")))
         sp.toolChainType = ToolChain::RVCT_ARMV5;
 
-    startDebugger(m_debuggerRunControlFactory->create(sp));
+
+    if (RunControl *rc = m_debuggerRunControlFactory->create(sp))
+        startDebugger(rc);
 }
 
 void DebuggerPluginPrivate::notifyCurrentEngine(int role, const QVariant &value)
@@ -1820,8 +1822,8 @@ void DebuggerPluginPrivate::attachExternalApplication
     sp.executable = binary;
     sp.crashParameter = crashParameter;
     sp.startMode = crashParameter.isEmpty() ? AttachExternal : AttachCrashedExternal;
-    DebuggerRunControl *rc = createDebugger(sp);
-    startDebugger(rc);
+    if (DebuggerRunControl *rc = createDebugger(sp))
+        startDebugger(rc);
 }
 
 void DebuggerPluginPrivate::attachCore()
@@ -1843,8 +1845,8 @@ void DebuggerPluginPrivate::attachCore(const QString &core, const QString &exe)
     sp.coreFile = core;
     sp.displayName = tr("Core file \"%1\"").arg(core);
     sp.startMode = AttachCore;
-    DebuggerRunControl *rc = createDebugger(sp);
-    startDebugger(rc);
+    if (DebuggerRunControl *rc = createDebugger(sp))
+        startDebugger(rc);
 }
 
 void DebuggerPluginPrivate::attachRemote(const QString &spec)
@@ -1856,8 +1858,8 @@ void DebuggerPluginPrivate::attachRemote(const QString &spec)
     sp.remoteArchitecture = spec.section('@', 2, 2);
     sp.displayName = tr("Remote: \"%1\"").arg(sp.remoteChannel);
     sp.startMode = AttachToRemote;
-    DebuggerRunControl *rc = createDebugger(sp);
-    startDebugger(rc);
+    if (DebuggerRunControl *rc = createDebugger(sp))
+        startDebugger(rc);
 }
 
 void DebuggerPluginPrivate::startRemoteApplication()
@@ -1902,7 +1904,8 @@ void DebuggerPluginPrivate::startRemoteApplication()
     sp.useServerStartScript = dlg.useServerStartScript();
     sp.serverStartScript = dlg.serverStartScript();
     sp.sysRoot = dlg.sysRoot();
-    startDebugger(createDebugger(sp));
+    if (RunControl *rc = createDebugger(sp))
+        startDebugger(rc);
 }
 
 void DebuggerPluginPrivate::enableReverseDebuggingTriggered(const QVariant &value)
@@ -1940,7 +1943,8 @@ void DebuggerPluginPrivate::attachRemoteTcf()
     sp.startMode = AttachTcf;
     if (dlg.useServerStartScript())
         sp.serverStartScript = dlg.serverStartScript();
-    startDebugger(createDebugger(sp));
+    if (RunControl *rc = createDebugger(sp))
+        startDebugger(rc);
 }
 
 bool DebuggerPluginPrivate::attachCmdLine()
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 03b2853f938971124fbd5ea0de8110fd132b7cca..89ffcc13701905d33739e43f6069fe9635c320b7 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -276,7 +276,8 @@ unsigned DebuggerRunnerPrivate::enabledEngines() const
 
 DebuggerRunnerPrivate::DebuggerRunnerPrivate(RunConfiguration *runConfiguration,
                                              unsigned enabledEngines) :
-      m_myRunConfiguration(runConfiguration)
+      m_engine(0)
+    , m_myRunConfiguration(runConfiguration)
     , m_running(false)
     , m_cmdLineEnabledEngines(enabledEngines)
 {
@@ -439,10 +440,11 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams
             && !sp.executable.isEmpty())
         engineType = engineForExecutable(enabledEngineTypes, sp.executable);
 
-    if (!engineType)
+    if (engineType == NoEngineType)
         engineType = engineForMode(enabledEngineTypes, sp.startMode);
 
-    if (engineType != QmlEngineType && (activeLangs & QmlLanguage)) {
+    if ((engineType != QmlEngineType && engineType != NoEngineType)
+        && (activeLangs & QmlLanguage)) {
         if (activeLangs & CppLanguage) {
             sp.cppEngineType = engineType;
             engineType = QmlCppEngineType;