diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 8c1e3dea1ac4fc0eb6dcb63c0a3ace15ac9adf78..c769e4b1c11bab79e9b3d05b05b5585e1c15a0f3 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1176,7 +1176,7 @@ static QSharedPointer<RunConfiguration> activeRunConfiguration()
 
 void DebuggerPlugin::startExternalApplication()
 {
-    const QSharedPointer<DebuggerStartParameters> sp(new DebuggerStartParameters);
+    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
     StartExternalDialog dlg(m_manager->mainWindow());
     dlg.setExecutableFile(
             configValue(_("LastExternalExecutableFile")).toString());
@@ -1190,6 +1190,7 @@ void DebuggerPlugin::startExternalApplication()
     setConfigValue(_("LastExternalExecutableArguments"),
                    dlg.executableArguments());
     sp->executable = dlg.executableFile();
+    sp->startMode = StartExternal;
     if (!dlg.executableArguments().isEmpty())
         sp->processArgs = dlg.executableArguments().split(QLatin1Char(' '));
 
@@ -1201,7 +1202,7 @@ void DebuggerPlugin::startExternalApplication()
         rc = DebuggerRunner::createDefaultRunConfiguration(sp->executable);
 
     if (RunControl *runControl = m_debuggerRunner
-            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, StartExternal))
+            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp))
         runControl->start();
 }
 
@@ -1218,21 +1219,21 @@ void DebuggerPlugin::attachExternalApplication(qint64 pid, const QString &crashP
         QMessageBox::warning(m_manager->mainWindow(), tr("Warning"), tr("Cannot attach to PID 0"));
         return;
     }
-    const QSharedPointer<DebuggerStartParameters> sp(new DebuggerStartParameters);
+    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
     sp->attachPID = pid;
     sp->crashParameter = crashParameter;
-    const DebuggerStartMode dsm = crashParameter.isEmpty() ?  AttachExternal : AttachCrashedExternal;
+    sp->startMode = crashParameter.isEmpty() ?  AttachExternal : AttachCrashedExternal;
     QSharedPointer<RunConfiguration> rc = activeRunConfiguration();
     if (rc.isNull())
         rc = DebuggerRunner::createDefaultRunConfiguration();
     if (RunControl *runControl = m_debuggerRunner
-            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, dsm))
+            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp))
         runControl->start();
 }
 
 void DebuggerPlugin::attachCore()
 {
-    const QSharedPointer<DebuggerStartParameters> sp(new DebuggerStartParameters);
+    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
     AttachCoreDialog dlg(m_manager->mainWindow());
     dlg.setExecutableFile(
             configValue(_("LastExternalExecutableFile")).toString());
@@ -1246,17 +1247,18 @@ void DebuggerPlugin::attachCore()
                    dlg.coreFile());
     sp->executable = dlg.executableFile();
     sp->coreFile = dlg.coreFile();
+    sp->startMode = AttachCore;
     QSharedPointer<RunConfiguration> rc = activeRunConfiguration();
     if (rc.isNull())
         rc = DebuggerRunner::createDefaultRunConfiguration();
     if (RunControl *runControl = m_debuggerRunner
-            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, AttachCore))
+            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp))
         runControl->start();
 }
 
 void DebuggerPlugin::startRemoteApplication()
 {
-    const QSharedPointer<DebuggerStartParameters> sp(new DebuggerStartParameters);
+    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
     StartRemoteDialog dlg(m_manager->mainWindow());
     QStringList arches;
     arches.append(_("i386:x86-64:intel"));
@@ -1277,6 +1279,7 @@ void DebuggerPlugin::startRemoteApplication()
     setConfigValue(_("LastUseServerStartScript"), dlg.useServerStartScript());
     sp->remoteChannel = dlg.remoteChannel();
     sp->remoteArchitecture = dlg.remoteArchitecture();
+    sp->startMode = StartRemote;
     if (dlg.useServerStartScript())
         sp->serverStartScript = dlg.serverStartScript();
 
@@ -1284,13 +1287,13 @@ void DebuggerPlugin::startRemoteApplication()
     if (rc.isNull())
         rc = DebuggerRunner::createDefaultRunConfiguration();
     if (RunControl *runControl = m_debuggerRunner
-            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, StartRemote))
+            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp))
         runControl->start();
 }
 
 void DebuggerPlugin::attachRemoteTcf()
 {
-    const QSharedPointer<DebuggerStartParameters> sp(new DebuggerStartParameters);
+    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
     AttachTcfDialog dlg(m_manager->mainWindow());
     QStringList arches;
     arches.append(_("i386:x86-64:intel"));
@@ -1312,6 +1315,7 @@ void DebuggerPlugin::attachRemoteTcf()
     sp->remoteChannel = dlg.remoteChannel();
     sp->remoteArchitecture = dlg.remoteArchitecture();
     sp->serverStartScript = dlg.serverStartScript();
+    sp->startMode = AttachTcf;
     if (dlg.useServerStartScript())
         sp->serverStartScript = dlg.serverStartScript();
 
@@ -1319,7 +1323,7 @@ void DebuggerPlugin::attachRemoteTcf()
     if (rc.isNull())
         rc = DebuggerRunner::createDefaultRunConfiguration();
     if (RunControl *runControl = m_debuggerRunner
-            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, AttachTcf))
+            ->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp))
         runControl->start();
 }
 
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 738e96a17b27246299ae61586063e9e8c5d8d033..6a61cbf5df1744b10cb1b6f3e758c60654439b29 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -85,23 +85,21 @@ RunConfigurationPtr DebuggerRunner::createDefaultRunConfiguration(const QString
 
 RunControl *DebuggerRunner::run(RunConfigurationPtr runConfiguration,
                                 const QString &mode,
-                                const QSharedPointer<DebuggerStartParameters> &sp,
-                                DebuggerStartMode startMode)
+                                const QSharedPointer<DebuggerStartParameters> &sp)
 {
     QTC_ASSERT(mode == ProjectExplorer::Constants::DEBUGMODE, return 0);
     ApplicationRunConfigurationPtr rc =
         runConfiguration.objectCast<ApplicationRunConfiguration>();
     QTC_ASSERT(!rc.isNull(), return 0);
-    //qDebug() << "***** Debugging" << rc->name() << rc->executable();
-    DebuggerRunControl *runControl = new DebuggerRunControl(m_manager, startMode, sp, rc);
-    return runControl;
+    return new DebuggerRunControl(m_manager, sp, rc);
 }
 
 RunControl *DebuggerRunner::run(RunConfigurationPtr runConfiguration,
     const QString &mode)
 {
     const QSharedPointer<DebuggerStartParameters> sp(new DebuggerStartParameters);
-    return run(runConfiguration, mode, sp, StartInternal);
+    sp->startMode = StartInternal;
+    return run(runConfiguration, mode, sp);
 }
 
 QWidget *DebuggerRunner::configurationWidget(RunConfigurationPtr runConfiguration)
@@ -121,7 +119,6 @@ QWidget *DebuggerRunner::configurationWidget(RunConfigurationPtr runConfiguratio
 
 
 DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager,
-       DebuggerStartMode mode,
        const QSharedPointer<DebuggerStartParameters> &startParameters,
        QSharedPointer<ApplicationRunConfiguration> runConfiguration)
   : RunControl(runConfiguration),
@@ -146,7 +143,6 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager,
 
     // Enhance parameters by info from the project, but do not clobber
     // arguments given in the dialogs
-    m_startParameters->startMode = mode;
     if (m_startParameters->executable.isEmpty())
         m_startParameters->executable = runConfiguration->executable();
     if (m_startParameters->environment.empty())
diff --git a/src/plugins/debugger/debuggerrunner.h b/src/plugins/debugger/debuggerrunner.h
index a7e08eea367d6a3cdccab88a1b7bb0ab2fcd68f6..28362044566e6b431ed608a2593082a6d9909e4b 100644
--- a/src/plugins/debugger/debuggerrunner.h
+++ b/src/plugins/debugger/debuggerrunner.h
@@ -61,16 +61,15 @@ public:
 
     // ProjectExplorer::IRunConfigurationRunner
     bool canRun(RunConfigurationPtr runConfiguration, const QString &mode);
-    virtual ProjectExplorer::RunControl *run(RunConfigurationPtr runConfiguration, const QString &mode);
+    virtual ProjectExplorer::RunControl *run(RunConfigurationPtr runConfiguration,
+                const QString &mode);
     virtual QString displayName() const;
 
     virtual QWidget *configurationWidget(RunConfigurationPtr runConfiguration);
 
-    virtual ProjectExplorer::RunControl
-            *run(RunConfigurationPtr runConfiguration,
+    virtual ProjectExplorer::RunControl *run(RunConfigurationPtr runConfiguration,
                  const QString &mode,
-                 const DebuggerStartParametersPtr &sp,
-                 DebuggerStartMode startMode);
+                 const DebuggerStartParametersPtr &sp);
 
     static RunConfigurationPtr createDefaultRunConfiguration(const QString &executable = QString());
 
@@ -87,7 +86,6 @@ class DebuggerRunControl
 
 public:
     DebuggerRunControl(DebuggerManager *manager,
-                       DebuggerStartMode mode,
                        const DebuggerStartParametersPtr &startParamters,
                        ApplicationRunConfigurationPtr runConfiguration);