diff --git a/src/plugins/debugger/cdb/cdbdebugengine.cpp b/src/plugins/debugger/cdb/cdbdebugengine.cpp
index 8f71847635cd07db573be2f8892d302882187aeb..e6e2c523365ceb127a9d62e48a9f3afc3c3c3e42 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine.cpp
+++ b/src/plugins/debugger/cdb/cdbdebugengine.cpp
@@ -386,8 +386,9 @@ void CdbDebugEngine::startupChecks()
     syncDebuggerPaths();
 }
 
-void CdbDebugEngine::startDebugger(const QSharedPointer<DebuggerStartParameters> &sp)
+void CdbDebugEngine::startDebugger(const DebuggerRunControl *runControl)
 {
+    DebuggerStartParameters *sp = &runControl->sp();
     if (debugCDBExecution)
         qDebug() << "startDebugger" << *sp;
     CdbCore::BreakPoint::clearNormalizeFileNameCache();
diff --git a/src/plugins/debugger/cdb/cdbdebugengine.h b/src/plugins/debugger/cdb/cdbdebugengine.h
index 16d928a16c083116cd00c07d2ad376973e351bdf..990284bb9e50b8dfc6cfe4ed4b50a9894e798268 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine.h
+++ b/src/plugins/debugger/cdb/cdbdebugengine.h
@@ -63,7 +63,7 @@ public:
 
     virtual void shutdown();
     virtual void setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor *editor, int cursorPos);
-    virtual void startDebugger(const QSharedPointer<DebuggerStartParameters> &startParameters);
+    virtual void startDebugger(const DebuggerRunControl *runControl);
     virtual void exitDebugger();
     virtual void detachDebugger();
     virtual void updateWatchData(const WatchData &data);
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 73d19dc00c19f950c9b54f005b1066cafa1955b7..1d29fbc8d6fcc969bb3d0dd7b123d9ef02a3d0d0 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -269,7 +269,7 @@ struct DebuggerManagerPrivate
     const QIcon m_locationMarkIcon;
 
     // FIXME: Remove engine-specific state
-    DebuggerStartParametersPtr m_startParameters;
+    const DebuggerRunControl *m_runControl;
     qint64 m_inferiorPid;
 
     /// Views
@@ -328,7 +328,6 @@ DebuggerManagerPrivate::DebuggerManagerPrivate(DebuggerManager *manager) :
    m_stopIcon(QLatin1String(":/debugger/images/debugger_stop_small.png")),
    m_interruptIcon(QLatin1String(":/debugger/images/debugger_interrupt_small.png")),
    m_locationMarkIcon(QLatin1String(":/debugger/images/location_16.png")),
-   m_startParameters(new DebuggerStartParameters),
    m_inferiorPid(0),
    m_disassemblerViewAgent(manager),
    m_engine(0)
@@ -1061,11 +1060,12 @@ static IDebuggerEngine *debuggerEngineForMode(DebuggerStartMode startMode, QStri
 #endif
 }
 
-void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
+void DebuggerManager::startNewDebugger(const DebuggerRunControl *runControl)
 {
     if (d->m_state != DebuggerNotReady)
         return;
-    d->m_startParameters = sp;
+    d->m_runControl = runControl;
+    const DebuggerStartParameters *sp = &runControl->sp();
     d->m_inferiorPid = sp->attachPID > 0 ? sp->attachPID : 0;
     const QString toolChainName = ProjectExplorer::ToolChain::toolChainName(
         ProjectExplorer::ToolChain::ToolChainType(sp->toolChainType));
@@ -1113,7 +1113,7 @@ void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
     setBusyCursor(false);
     setState(EngineStarting);
     connect(d->m_engine, SIGNAL(startFailed()), this, SLOT(startFailed()));
-    d->m_engine->startDebugger(sp);
+    d->m_engine->startDebugger(runControl);
 
     const unsigned engineCapabilities = d->m_engine->debuggerCapabilities();
     theDebuggerAction(OperateByInstruction)
@@ -1174,11 +1174,6 @@ void DebuggerManager::abortDebugger()
     d->m_codeModelSnapshot = CPlusPlus::Snapshot();
 }
 
-DebuggerStartParametersPtr DebuggerManager::startParameters() const
-{
-    return d->m_startParameters;
-}
-
 qint64 DebuggerManager::inferiorPid() const
 {
     return d->m_inferiorPid;
@@ -1316,7 +1311,7 @@ void DebuggerManager::aboutToUnloadSession()
     // Note that at startup, session switches may occur, which interfer
     // with command-line debugging startup.
     if (d->m_engine && state() != DebuggerNotReady
-        && d->m_startParameters->startMode == StartInternal)
+        && runControl()->sp().startMode == StartInternal)
             d->m_engine->shutdown();
 }
 
@@ -1651,7 +1646,7 @@ QString DebuggerManager::qtDumperLibraryName() const
 {
     if (theDebuggerAction(UseCustomDebuggingHelperLocation)->value().toBool())
         return theDebuggerAction(CustomDebuggingHelperLocation)->value().toString();
-    return d->m_startParameters->dumperLibrary;
+    return runControl()->sp().dumperLibrary;
 }
 
 QStringList DebuggerManager::qtDumperLibraryLocations() const
@@ -1663,7 +1658,7 @@ QStringList DebuggerManager::qtDumperLibraryLocations() const
             tr("%1 (explicitly set in the Debugger Options)").arg(customLocation);
         return QStringList(location);
     }
-    return d->m_startParameters->dumperLibraryLocations;
+    return runControl()->sp().dumperLibraryLocations;
 }
 
 void DebuggerManager::showQtDumperLibraryWarning(const QString &details)
@@ -2033,6 +2028,11 @@ void DebuggerManager::openTextEditor(const QString &titlePattern,
     d->m_plugin->openTextEditor(titlePattern, contents);
 }
 
+DebuggerRunControl *DebuggerManager::runControl() const
+{
+    return const_cast<DebuggerRunControl *>(d->m_runControl);
+}
+
 //////////////////////////////////////////////////////////////////////
 //
 // AbstractDebuggerEngine
@@ -2060,6 +2060,7 @@ void IDebuggerEngine::setState(DebuggerState state, bool forced)
 //
 //////////////////////////////////////////////////////////////////////
 
+/*
 void DebuggerManager::runTest(const QString &fileName)
 {
     d->m_startParameters->executable = fileName;
@@ -2067,6 +2068,7 @@ void DebuggerManager::runTest(const QString &fileName)
     d->m_startParameters->workingDirectory.clear();
     //startNewDebugger(StartInternal);
 }
+*/
 
 } // namespace Debugger
 
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index e7415f7662c9393690871eea16f573eace6da371..8011a65902da9ef5cd48b4de35333480f184cdf1 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -156,7 +156,7 @@ public:
     QLabel *statusLabel() const;
     Internal::IDebuggerEngine *currentEngine() const;
 
-    DebuggerStartParametersPtr startParameters() const;
+    DebuggerRunControl *runControl() const;
     qint64 inferiorPid() const;
 
     QMessageBox *showMessageBox(int icon, const QString &title, const QString &text,
@@ -177,7 +177,7 @@ public:
     static DebuggerManager *instance();
 
 public slots:
-    void startNewDebugger(const DebuggerStartParametersPtr &sp);
+    void startNewDebugger(const DebuggerRunControl *runControl);
     void exitDebugger();
     void abortDebugger();
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 9e44c69257247d2d5f9720c29e4694b189a3b0bd..4a7c8dc43e5f2f4f076bd75b4a0d2812f14cf66d 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1369,7 +1369,7 @@ void DebuggerPlugin::handleStateChanged(int state)
     //const bool running = state == InferiorRunning;
 
     const bool detachable = state == InferiorStopped
-        && m_manager->startParameters()->startMode != AttachCore;
+        && m_manager->runControl()->sp().startMode != AttachCore;
 
     m_startExternalAction->setEnabled(!started && !starting);
     m_attachExternalAction->setEnabled(!started && !starting);
@@ -1445,7 +1445,7 @@ void DebuggerPlugin::showSettingsDialog()
 
 void DebuggerPlugin::startExternalApplication()
 {
-    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
+    DebuggerStartParameters sp;
     StartExternalDialog dlg(m_uiSwitcher->mainWindow());
     dlg.setExecutableFile(
             configValue(_("LastExternalExecutableFile")).toString());
@@ -1462,11 +1462,11 @@ void DebuggerPlugin::startExternalApplication()
                    dlg.executableArguments());
     setConfigValue(_("LastExternalWorkingDirectory"),
                    dlg.workingDirectory());
-    sp->executable = dlg.executableFile();
-    sp->startMode = StartExternal;
-    sp->workingDirectory = dlg.workingDirectory();
+    sp.executable = dlg.executableFile();
+    sp.startMode = StartExternal;
+    sp.workingDirectory = dlg.workingDirectory();
     if (!dlg.executableArguments().isEmpty())
-        sp->processArgs = dlg.executableArguments().split(QLatin1Char(' '));
+        sp.processArgs = dlg.executableArguments().split(QLatin1Char(' '));
 
     if (dlg.breakAtMain())
         m_manager->breakByFunctionMain();
@@ -1491,11 +1491,11 @@ void DebuggerPlugin::attachExternalApplication(qint64 pid,
             tr("Cannot attach to PID 0"));
         return;
     }
-    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
-    sp->attachPID = pid;
-    sp->executable = binary;
-    sp->crashParameter = crashParameter;
-    sp->startMode = crashParameter.isEmpty() ? AttachExternal : AttachCrashedExternal;
+    DebuggerStartParameters sp;
+    sp.attachPID = pid;
+    sp.executable = binary;
+    sp.crashParameter = crashParameter;
+    sp.startMode = crashParameter.isEmpty() ? AttachExternal : AttachCrashedExternal;
     if (RunControl *runControl = m_debuggerRunControlFactory->create(sp))
         ProjectExplorerPlugin::instance()->startRunControl(runControl, PE::DEBUGMODE);
 }
@@ -1518,11 +1518,11 @@ void DebuggerPlugin::attachCore()
 
 void DebuggerPlugin::attachCore(const QString &core, const QString &exe)
 {
-    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
-    sp->executable = exe;
-    sp->coreFile = core;
-    sp->displayName = tr("Core file: \"%1\"").arg(core);
-    sp->startMode = AttachCore;
+    DebuggerStartParameters sp;
+    sp.executable = exe;
+    sp.coreFile = core;
+    sp.displayName = tr("Core file: \"%1\"").arg(core);
+    sp.startMode = AttachCore;
     if (RunControl *runControl = m_debuggerRunControlFactory->create(sp))
         ProjectExplorerPlugin::instance()->
             startRunControl(runControl, PE::DEBUGMODE);
@@ -1530,7 +1530,7 @@ void DebuggerPlugin::attachCore(const QString &core, const QString &exe)
 
 void DebuggerPlugin::startRemoteApplication()
 {
-    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
+    DebuggerStartParameters sp;
     StartRemoteDialog dlg(m_uiSwitcher->mainWindow());
     QStringList arches;
     arches.append(_("i386:x86-64:intel"));
@@ -1559,17 +1559,17 @@ void DebuggerPlugin::startRemoteApplication()
     setConfigValue(_("LastServerStartScript"), dlg.serverStartScript());
     setConfigValue(_("LastUseServerStartScript"), dlg.useServerStartScript());
     setConfigValue(_("LastSysroot"), dlg.sysRoot());
-    sp->remoteChannel = dlg.remoteChannel();
-    sp->remoteArchitecture = dlg.remoteArchitecture();
-    sp->executable = dlg.localExecutable();
-    sp->displayName = dlg.localExecutable();
-    sp->debuggerCommand = dlg.debugger(); // Override toolchain-detection.
-    if (!sp->debuggerCommand.isEmpty())
-        sp->toolChainType = ProjectExplorer::ToolChain::INVALID;
-    sp->startMode = AttachToRemote;
+    sp.remoteChannel = dlg.remoteChannel();
+    sp.remoteArchitecture = dlg.remoteArchitecture();
+    sp.executable = dlg.localExecutable();
+    sp.displayName = dlg.localExecutable();
+    sp.debuggerCommand = dlg.debugger(); // Override toolchain-detection.
+    if (!sp.debuggerCommand.isEmpty())
+        sp.toolChainType = ProjectExplorer::ToolChain::INVALID;
+    sp.startMode = AttachToRemote;
     if (dlg.useServerStartScript())
-        sp->serverStartScript = dlg.serverStartScript();
-    sp->sysRoot = dlg.sysRoot();
+        sp.serverStartScript = dlg.serverStartScript();
+    sp.sysRoot = dlg.sysRoot();
 
     if (RunControl *runControl = m_debuggerRunControlFactory->create(sp))
         ProjectExplorerPlugin::instance()
@@ -1586,7 +1586,7 @@ void DebuggerPlugin::enableReverseDebuggingTriggered(const QVariant &value)
 
 void DebuggerPlugin::attachRemoteTcf()
 {
-    const DebuggerStartParametersPtr sp(new DebuggerStartParameters);
+    DebuggerStartParameters sp;
     AttachTcfDialog dlg(m_uiSwitcher->mainWindow());
     QStringList arches;
     arches.append(_("i386:x86-64:intel"));
@@ -1605,12 +1605,12 @@ void DebuggerPlugin::attachRemoteTcf()
     setConfigValue(_("LastTcfRemoteArchitecture"), dlg.remoteArchitecture());
     setConfigValue(_("LastTcfServerStartScript"), dlg.serverStartScript());
     setConfigValue(_("LastTcfUseServerStartScript"), dlg.useServerStartScript());
-    sp->remoteChannel = dlg.remoteChannel();
-    sp->remoteArchitecture = dlg.remoteArchitecture();
-    sp->serverStartScript = dlg.serverStartScript();
-    sp->startMode = AttachTcf;
+    sp.remoteChannel = dlg.remoteChannel();
+    sp.remoteArchitecture = dlg.remoteArchitecture();
+    sp.serverStartScript = dlg.serverStartScript();
+    sp.startMode = AttachTcf;
     if (dlg.useServerStartScript())
-        sp->serverStartScript = dlg.serverStartScript();
+        sp.serverStartScript = dlg.serverStartScript();
 
     if (RunControl *runControl = m_debuggerRunControlFactory->create(sp))
         ProjectExplorerPlugin::instance()
diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h
index 7d9e7b15b38ec46b628676751c9486590e54cea2..cc895948b6cba53a00da734c69895cf3c5284d01 100644
--- a/src/plugins/debugger/debuggerplugin.h
+++ b/src/plugins/debugger/debuggerplugin.h
@@ -57,11 +57,11 @@ namespace Debugger {
 
 class DebuggerManager;
 class DebuggerUISwitcher;
+class DebuggerRunControlFactory;
 
 namespace Internal {
 
 class BreakpointData;
-class DebuggerRunControlFactory;
 class DebugMode;
 
 class DebuggerPlugin : public ExtensionSystem::IPlugin
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 7d46177a9328b9ebda7bc64b20eb35fc0c8938f8..a5b4fe1e2c3a893b4b463e3abe5d4bc3821f8230 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -50,7 +50,6 @@
 using namespace ProjectExplorer;
 
 namespace Debugger {
-namespace Internal {
 
 ////////////////////////////////////////////////////////////////////////
 //
@@ -75,24 +74,24 @@ QString DebuggerRunControlFactory::displayName() const
     return tr("Debug");
 }
 
-static DebuggerStartParametersPtr localStartParameters(RunConfiguration *runConfiguration)
+static DebuggerStartParameters localStartParameters(RunConfiguration *runConfiguration)
 {
-    DebuggerStartParametersPtr sp(new DebuggerStartParameters());
+    DebuggerStartParameters sp;
     QTC_ASSERT(runConfiguration, return sp);
     LocalApplicationRunConfiguration *rc =
             qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration);
     QTC_ASSERT(rc, return sp);
 
-    sp->startMode = StartInternal;
-    sp->executable = rc->executable();
-    sp->environment = rc->environment().toStringList();
-    sp->workingDirectory = rc->workingDirectory();
-    sp->processArgs = rc->commandLineArguments();
-    sp->toolChainType = rc->toolChainType();
-    sp->useTerminal = rc->runMode() == LocalApplicationRunConfiguration::Console;
-    sp->dumperLibrary = rc->dumperLibrary();
-    sp->dumperLibraryLocations = rc->dumperLibraryLocations();
-    sp->displayName = rc->displayName();
+    sp.startMode = StartInternal;
+    sp.executable = rc->executable();
+    sp.environment = rc->environment().toStringList();
+    sp.workingDirectory = rc->workingDirectory();
+    sp.processArgs = rc->commandLineArguments();
+    sp.toolChainType = rc->toolChainType();
+    sp.useTerminal = rc->runMode() == LocalApplicationRunConfiguration::Console;
+    sp.dumperLibrary = rc->dumperLibrary();
+    sp.dumperLibraryLocations = rc->dumperLibraryLocations();
+    sp.displayName = rc->displayName();
 
     // Find qtInstallPath.
     QString qmakePath = DebuggingHelperLibrary::findSystemQt(rc->environment());
@@ -105,7 +104,7 @@ static DebuggerStartParametersPtr localStartParameters(RunConfiguration *runConf
         proc.waitForFinished();
         QByteArray ba = proc.readAllStandardOutput().trimmed();
         QFileInfo fi(QString::fromLocal8Bit(ba) + "/..");
-        sp->qtInstallPath = fi.absoluteFilePath();
+        sp.qtInstallPath = fi.absoluteFilePath();
     }
     return sp;
 }
@@ -114,11 +113,11 @@ RunControl *DebuggerRunControlFactory::create(RunConfiguration *runConfiguration
                                               const QString &mode)
 {
     QTC_ASSERT(mode == ProjectExplorer::Constants::DEBUGMODE, return 0);
-    DebuggerStartParametersPtr sp = localStartParameters(runConfiguration);
+    DebuggerStartParameters sp = localStartParameters(runConfiguration);
     return new DebuggerRunControl(m_manager, sp);
 }
 
-RunControl *DebuggerRunControlFactory::create(const DebuggerStartParametersPtr &sp)
+RunControl *DebuggerRunControlFactory::create(const DebuggerStartParameters &sp)
 {
     return new DebuggerRunControl(m_manager, sp);
 }
@@ -139,7 +138,7 @@ QWidget *DebuggerRunControlFactory::createConfigurationWidget(RunConfiguration *
 ////////////////////////////////////////////////////////////////////////
 
 DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager,
-        const DebuggerStartParametersPtr &startParameters)
+        const DebuggerStartParameters &startParameters)
     : RunControl(0, ProjectExplorer::Constants::DEBUGMODE),
       m_startParameters(startParameters),
       m_manager(manager),
@@ -159,19 +158,19 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager,
     connect(this, SIGNAL(stopRequested()),
             m_manager, SLOT(exitDebugger()));
 
-    if (m_startParameters->environment.empty())
-        m_startParameters->environment = ProjectExplorer::Environment().toStringList();
-    m_startParameters->useTerminal = false;
+    if (m_startParameters.environment.empty())
+        m_startParameters.environment = ProjectExplorer::Environment().toStringList();
+    m_startParameters.useTerminal = false;
 }
 
 QString DebuggerRunControl::displayName() const
 {
-    return m_startParameters->displayName;
+    return m_startParameters.displayName;
 }
 
 void DebuggerRunControl::setCustomEnvironment(ProjectExplorer::Environment env)
 {
-    m_startParameters->environment = env.toStringList();
+    m_startParameters.environment = env.toStringList();
 }
 
 void DebuggerRunControl::init()
@@ -184,9 +183,9 @@ void DebuggerRunControl::start()
     QString errorMessage;
     QString settingsCategory;
     QString settingsPage;
-    if (m_manager->checkDebugConfiguration(m_startParameters->toolChainType, &errorMessage,
+    if (m_manager->checkDebugConfiguration(m_startParameters.toolChainType, &errorMessage,
                                            &settingsCategory, &settingsPage)) {
-        m_manager->startNewDebugger(m_startParameters);
+        m_manager->startNewDebugger(this);
         emit started();
     } else {
         appendMessage(this, errorMessage, true);
@@ -225,5 +224,4 @@ bool DebuggerRunControl::isRunning() const
     return m_running;
 }
 
-} // namespace Internal
 } // namespace Debugger
diff --git a/src/plugins/debugger/debuggerrunner.h b/src/plugins/debugger/debuggerrunner.h
index 345b2f583e220e58ddda001d07e27a03f5d00743..ec72a53c79d714f06887aa688c80c12079b56a1b 100644
--- a/src/plugins/debugger/debuggerrunner.h
+++ b/src/plugins/debugger/debuggerrunner.h
@@ -78,12 +78,8 @@ public:
     DebuggerStartMode startMode;
 };
 
-typedef QSharedPointer<DebuggerStartParameters> DebuggerStartParametersPtr;
-
 //DEBUGGER_EXPORT QDebug operator<<(QDebug str, const DebuggerStartParameters &);
 
-namespace Internal {
-
 class DEBUGGER_EXPORT DebuggerRunControlFactory
     : public ProjectExplorer::IRunControlFactory
 {
@@ -102,7 +98,7 @@ public:
 
 
     // This is used by the "Non-Standard" scenarios, e.g. Attach to Core.
-    ProjectExplorer::RunControl *create(const DebuggerStartParametersPtr &sp);
+    ProjectExplorer::RunControl *create(const DebuggerStartParameters &sp);
 
 private:
     DebuggerManager *m_manager;
@@ -116,7 +112,7 @@ class DEBUGGER_EXPORT DebuggerRunControl
 
 public:
     DebuggerRunControl(DebuggerManager *manager,
-                       const DebuggerStartParametersPtr &startParameters);
+                       const DebuggerStartParameters &startParameters);
 
     void setCustomEnvironment(ProjectExplorer::Environment env);
 
@@ -128,6 +124,8 @@ public:
 
     Q_SLOT void debuggingFinished();
 
+    const DebuggerStartParameters &sp() const { return m_startParameters; }
+
 signals:
     void stopRequested();
 
@@ -137,12 +135,11 @@ private slots:
 
 private:
     void init();
-    DebuggerStartParametersPtr m_startParameters;
     DebuggerManager *m_manager;
+    DebuggerStartParameters m_startParameters;
     bool m_running;
 };
 
-} // namespace Internal
 } // namespace Debugger
 
 #endif // DEBUGGERRUNNER_H
diff --git a/src/plugins/debugger/gdb/abstractgdbadapter.h b/src/plugins/debugger/gdb/abstractgdbadapter.h
index 3d36f2453ba602c3acf2ed23f543aee7d4b8f1b9..27ab138de409f5abedf98f6d0f202ff82761f02f 100644
--- a/src/plugins/debugger/gdb/abstractgdbadapter.h
+++ b/src/plugins/debugger/gdb/abstractgdbadapter.h
@@ -107,6 +107,8 @@ protected:
         { m_engine->setState(state); }
     const DebuggerStartParameters &startParameters() const
         { return m_engine->startParameters(); }
+    const DebuggerRunControl *runControl() const
+        { return m_engine->runControl(); }
     void debugMessage(const QString &msg) const
         { m_engine->debugMessage(msg); }
     void showStatusMessage(const QString &msg) const
diff --git a/src/plugins/debugger/gdb/classicgdbengine.cpp b/src/plugins/debugger/gdb/classicgdbengine.cpp
index daf61213030542c5d003d4a8f4e0cfef45ffacb4..675efccdbc71fca6f259a202a320d897786c21a4 100644
--- a/src/plugins/debugger/gdb/classicgdbengine.cpp
+++ b/src/plugins/debugger/gdb/classicgdbengine.cpp
@@ -514,9 +514,9 @@ void GdbEngine::tryLoadDebuggingHelpersClassic()
 
     m_debuggingHelperState = DebuggingHelperLoadTried;
     QByteArray dlopenLib;
-    if (startParameters().startMode == AttachToRemote
-        || startParameters().startMode == StartRemoteGdb)
-        dlopenLib = startParameters().remoteDumperLib;
+    if (runControl()->sp().startMode == AttachToRemote
+        || runControl()->sp().startMode == StartRemoteGdb)
+        dlopenLib = runControl()->sp().remoteDumperLib;
     else
         dlopenLib = manager()->qtDumperLibraryName().toLocal8Bit();
 
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 310b15da5997c0388c0a2a9c1c88a5c3216de945..091821f8fccaf3bd4b387eba97f17511aec7785c 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -211,8 +211,8 @@ void GdbEngine::disconnectDebuggingHelperActions()
 
 DebuggerStartMode GdbEngine::startMode() const
 {
-    QTC_ASSERT(!m_startParameters.isNull(), return NoStartMode);
-    return m_startParameters->startMode;
+    QTC_ASSERT(m_runControl, return NoStartMode);
+    return startParameters().startMode;
 }
 
 QMainWindow *GdbEngine::mainWindow() const
@@ -1355,7 +1355,7 @@ void GdbEngine::handleStopResponse(const GdbMi &data)
             && reason == "signal-received") {
         QByteArray name = data.findChild("signal-name").data();
         if (name != STOP_SIGNAL
-            && (startParameters().startMode != AttachToRemote
+            && (runControl()->sp().startMode != AttachToRemote
                 || name != CROSS_STOP_SIGNAL))
             initHelpers = false;
     }
@@ -1434,7 +1434,7 @@ void GdbEngine::handleStop1(const GdbMi &data)
             // Ignore these as they are showing up regularly when
             // stopping debugging.
             if (name != STOP_SIGNAL
-                && (startParameters().startMode != AttachToRemote
+                && (runControl()->sp().startMode != AttachToRemote
                     || name != CROSS_STOP_SIGNAL)) {
                 QString msg = tr("<p>The inferior stopped because it received a "
                     "signal from the Operating System.<p>"
@@ -1536,8 +1536,8 @@ void GdbEngine::handleHasPython(const GdbResponse &response)
             QByteArray cmd = "set environment ";
             cmd += Debugger::Constants::Internal::LD_PRELOAD_ENV_VAR;
             cmd += ' ';
-            cmd += startParameters().startMode == StartRemoteGdb
-               ? startParameters().remoteDumperLib
+            cmd += runControl()->sp().startMode == StartRemoteGdb
+               ? runControl()->sp().remoteDumperLib
                : cmd += manager()->qtDumperLibraryName().toLocal8Bit();
             postCommand(cmd);
             m_debuggingHelperState = DebuggingHelperLoadTried;
@@ -1737,8 +1737,9 @@ bool GdbEngine::checkConfiguration(int toolChain, QString *errorMessage, QString
     return true;
 }
 
-AbstractGdbAdapter *GdbEngine::createAdapter(const DebuggerStartParametersPtr &sp)
+AbstractGdbAdapter *GdbEngine::createAdapter(const DebuggerRunControl *runControl)
 {
+    const DebuggerStartParameters *sp = &runControl->sp();
     switch (sp->toolChainType) {
     case ProjectExplorer::ToolChain::WINSCW: // S60
     case ProjectExplorer::ToolChain::GCCE:
@@ -1769,7 +1770,7 @@ AbstractGdbAdapter *GdbEngine::createAdapter(const DebuggerStartParametersPtr &s
     }
 }
 
-void GdbEngine::startDebugger(const DebuggerStartParametersPtr &sp)
+void GdbEngine::startDebugger(const DebuggerRunControl *runControl)
 {
     QTC_ASSERT(state() == EngineStarting, qDebug() << state());
     // This should be set by the constructor or in exitDebugger()
@@ -1787,10 +1788,10 @@ void GdbEngine::startDebugger(const DebuggerStartParametersPtr &sp)
     fp->setKeepOnFinish(false); 
     m_progress->reportStarted();
 
-    m_startParameters = sp;
+    m_runControl = runControl;
 
     delete m_gdbAdapter;
-    m_gdbAdapter = createAdapter(sp);
+    m_gdbAdapter = createAdapter(m_runControl);
     connectAdapter();
 
     if (m_gdbAdapter->dumperHandling() != AbstractGdbAdapter::DumperNotAvailable)
@@ -3036,8 +3037,10 @@ void GdbEngine::handleMakeSnapshot(const GdbResponse &response)
 void GdbEngine::activateSnapshot(int index)
 {
     SnapshotData snapshot = m_manager->snapshotHandler()->setCurrentIndex(index);
-    m_startParameters->startMode = AttachCore;
-    m_startParameters->coreFile = snapshot.location();
+
+    DebuggerStartParameters &sp = const_cast<DebuggerStartParameters &>(m_runControl->sp());
+    sp.startMode = AttachCore;
+    sp.coreFile = snapshot.location();
 
     if (state() == InferiorUnrunnable) {
         // All is well. We are looking at another core file.
@@ -3055,7 +3058,7 @@ void GdbEngine::activateSnapshot(int index)
             return;
         debugMessage(_("KILLING DEBUGGER AS REQUESTED BY USER"));
         delete m_gdbAdapter;
-        m_gdbAdapter = createAdapter(m_startParameters);
+        m_gdbAdapter = createAdapter(m_runControl);
         postCommand("kill", NeedsStop, CB(handleActivateSnapshot));
     } else {
         activateSnapshot2();
@@ -4002,11 +4005,11 @@ bool GdbEngine::startGdb(const QStringList &args, const QString &gdb, const QStr
 
     m_gdb = QString::fromLatin1(qgetenv("QTC_DEBUGGER_PATH"));
     if (m_gdb.isEmpty())
-        m_gdb = m_gdbBinaryToolChainMap->key(m_startParameters->toolChainType);
+        m_gdb = m_gdbBinaryToolChainMap->key(m_runControl->sp().toolChainType);
     if (m_gdb.isEmpty())
         m_gdb = gdb;
     if (m_gdb.isEmpty()) {
-        handleAdapterStartFailed(msgNoBinaryForToolChain(m_startParameters->toolChainType),
+        handleAdapterStartFailed(msgNoBinaryForToolChain(m_runControl->sp().toolChainType),
                                  GdbOptionsPage::settingsId());
         return false;
     }
@@ -4241,7 +4244,7 @@ void GdbEngine::handleAdapterStarted()
 
 void GdbEngine::handleInferiorPrepared()
 {
-    const QByteArray qtInstallPath = m_startParameters->qtInstallPath.toLocal8Bit();
+    const QByteArray qtInstallPath = m_runControl->sp().qtInstallPath.toLocal8Bit();
     if (!qtInstallPath.isEmpty()) {
         QByteArray qtBuildPath;
 #if defined(Q_OS_WIN)
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index eb3664852666e2cd00f966833d8a140440456291..ed8d0b8239cab50ac4397657356c8ba26aedd7f5 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -111,7 +111,7 @@ private: ////////// General Interface //////////
 
     virtual bool checkConfiguration(int toolChain, QString *errorMessage,
         QString *settingsPage = 0) const;
-    virtual void startDebugger(const DebuggerStartParametersPtr &sp);
+    virtual void startDebugger(const DebuggerRunControl *runControl);
     virtual unsigned debuggerCapabilities() const;
     virtual void exitDebugger();
     virtual void abortDebugger();
@@ -125,16 +125,16 @@ private: ////////// General State //////////
 
     void initializeVariables();
     DebuggerStartMode startMode() const;
-    const DebuggerStartParameters &startParameters() const
-        { return *m_startParameters; }
+    const DebuggerRunControl *runControl() const { return m_runControl; }
+    const DebuggerStartParameters &startParameters() const { return m_runControl->sp(); }
     Q_SLOT void setAutoDerefPointers(const QVariant &on);
 
-    DebuggerStartParametersPtr m_startParameters;
+    const DebuggerRunControl *m_runControl;
     bool m_registerNamesListed;
 
 private: ////////// Gdb Process Management //////////
 
-    AbstractGdbAdapter *createAdapter(const DebuggerStartParametersPtr &dp);
+    AbstractGdbAdapter *createAdapter(const DebuggerRunControl *runControl);
     void connectAdapter();
     bool startGdb(const QStringList &args = QStringList(),
                   const QString &gdb = QString(),
diff --git a/src/plugins/debugger/idebuggerengine.h b/src/plugins/debugger/idebuggerengine.h
index b78824719051e228d7c9a606b66f175b9e19d7da..ad2d1eeb52c62e51cf2175c4bb18e358f2eca080 100644
--- a/src/plugins/debugger/idebuggerengine.h
+++ b/src/plugins/debugger/idebuggerengine.h
@@ -50,8 +50,10 @@ class IOptionsPage;
 }
 
 namespace Debugger {
+
 class DebuggerManager;
-class DebuggerStartParameters;
+class DebuggerRunControl;
+
 namespace Internal {
 
 class DisassemblerViewAgent;
@@ -64,15 +66,13 @@ class IDebuggerEngine : public QObject
     Q_OBJECT
 
 public:
-    typedef QSharedPointer<DebuggerStartParameters> DebuggerStartParametersPtr;
-
     IDebuggerEngine(DebuggerManager *manager, QObject *parent = 0)
         : QObject(parent), m_manager(manager)
     {}
 
     virtual void shutdown() = 0;
     virtual void setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor *editor, int cursorPos) = 0;
-    virtual void startDebugger(const DebuggerStartParametersPtr &startParameters) = 0;
+    virtual void startDebugger(const DebuggerRunControl *runControl) = 0;
     virtual void exitDebugger() = 0;
     virtual void abortDebugger() { exitDebugger(); }
     virtual void detachDebugger() {}
diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp
index 49eb20a4ba92d7ce7d10756926e29bdda02f3998..7f6d305df42f733f4d93c226f0b26da0995a4216 100644
--- a/src/plugins/debugger/pdb/pdbengine.cpp
+++ b/src/plugins/debugger/pdb/pdbengine.cpp
@@ -136,11 +136,11 @@ void PdbEngine::exitDebugger()
     setState(DebuggerNotReady);
 }
 
-void PdbEngine::startDebugger(const DebuggerStartParametersPtr &sp)
+void PdbEngine::startDebugger(const DebuggerRunControl *runControl)
 {
     setState(AdapterStarting);
 
-    m_scriptFileName = QFileInfo(sp->executable).absoluteFilePath();
+    m_scriptFileName = QFileInfo(runControl->sp().executable).absoluteFilePath();
     QFile scriptFile(m_scriptFileName);
     if (!scriptFile.open(QIODevice::ReadOnly|QIODevice::Text)) {
         //debugMessage("STARTING " +m_scriptFileName + "FAILED");
diff --git a/src/plugins/debugger/pdb/pdbengine.h b/src/plugins/debugger/pdb/pdbengine.h
index 9262b6a6fc48928577700e815e57f6a5adf7a3bf..434623f064e8e8e1ebe24bdb966a591d6fe80f68 100644
--- a/src/plugins/debugger/pdb/pdbengine.h
+++ b/src/plugins/debugger/pdb/pdbengine.h
@@ -72,7 +72,7 @@ private:
     void shutdown();
     void setToolTipExpression(const QPoint &mousePos,
         TextEditor::ITextEditor *editor, int cursorPos);
-    void startDebugger(const DebuggerStartParametersPtr &sp);
+    void startDebugger(const DebuggerRunControl *runControl);
 
     void exitDebugger();
 
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index 8ed9eb5d65420824d637ae61cb2a14e47be52d4d..fa61f6394535daa6075d8239abb32da7019d36e5 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -201,14 +201,14 @@ void QmlEngine::exitDebugger()
     manager()->notifyInferiorExited();
 }
 
-void QmlEngine::startDebugger(const DebuggerStartParametersPtr &sp)
+void QmlEngine::startDebugger(const DebuggerRunControl *runControl)
 {
     qDebug() << "STARTING QML ENGINE";
     setState(InferiorRunningRequested);
     showStatusMessage(tr("Running requested..."), 5000);
-    const int pos = sp->remoteChannel.indexOf(QLatin1Char(':'));
-    const QString host = sp->remoteChannel.left(pos);
-    const quint16 port = sp->remoteChannel.mid(pos + 1).toInt();
+    const int pos = runControl->sp().remoteChannel.indexOf(QLatin1Char(':'));
+    const QString host = runControl->sp().remoteChannel.left(pos);
+    const quint16 port = runControl->sp().remoteChannel.mid(pos + 1).toInt();
     //QTimer::singleShot(0, this, SLOT(runInferior()));
     m_socket->connectToHost(host, port);
     emit startSuccessful();
diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h
index 3b85c3c9dbc3d00c9108ca29c7495393b16f465e..9c37d7bbfea45287545c2da08f5558950b9626b0 100644
--- a/src/plugins/debugger/qml/qmlengine.h
+++ b/src/plugins/debugger/qml/qmlengine.h
@@ -75,7 +75,7 @@ private:
 
     void shutdown();
     void setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor *editor, int cursorPos);
-    void startDebugger(const DebuggerStartParametersPtr &sp);
+    void startDebugger(const DebuggerRunControl *runControl);
     void exitDebugger();
 
     void continueInferior();
diff --git a/src/plugins/debugger/script/scriptengine.cpp b/src/plugins/debugger/script/scriptengine.cpp
index 3185c10d978b8eba211e22706c489a5c5b5e923e..07285571254fac445bda4ea5e0ce03e84a3af297 100644
--- a/src/plugins/debugger/script/scriptengine.cpp
+++ b/src/plugins/debugger/script/scriptengine.cpp
@@ -228,7 +228,7 @@ void ScriptEngine::exitDebugger()
     setState(DebuggerNotReady);
 }
 
-void ScriptEngine::startDebugger(const DebuggerStartParametersPtr &sp)
+void ScriptEngine::startDebugger(const DebuggerRunControl *runControl)
 {
     setState(AdapterStarting);
     if (m_scriptEngine.isNull())
@@ -247,7 +247,7 @@ void ScriptEngine::startDebugger(const DebuggerStartParametersPtr &sp)
     setState(AdapterStarted);
     setState(InferiorStarting);
 
-    m_scriptFileName = QFileInfo (sp->executable).absoluteFilePath();
+    m_scriptFileName = QFileInfo(runControl->sp().executable).absoluteFilePath();
     QFile scriptFile(m_scriptFileName);
     if (!scriptFile.open(QIODevice::ReadOnly|QIODevice::Text)) {
         manager()->showDebuggerOutput(LogError, QString::fromLatin1("Cannot open %1: %2").
diff --git a/src/plugins/debugger/script/scriptengine.h b/src/plugins/debugger/script/scriptengine.h
index e320c46c09f37d81a2cc6c9125b7a6deae2daa61..34d2608cdcecd35ea67aeaccf51d91d97c82541e 100644
--- a/src/plugins/debugger/script/scriptengine.h
+++ b/src/plugins/debugger/script/scriptengine.h
@@ -71,7 +71,7 @@ private:
     void shutdown();
     void setToolTipExpression(const QPoint &mousePos,
         TextEditor::ITextEditor *editor, int cursorPos);
-    void startDebugger(const DebuggerStartParametersPtr &sp);
+    void startDebugger(const DebuggerRunControl *runControl);
 
     void exitDebugger();
 
diff --git a/src/plugins/debugger/tcf/tcfengine.cpp b/src/plugins/debugger/tcf/tcfengine.cpp
index 7982e4e5192afd1b7279a5d5024039a02e577f70..d116a9e873ae2040aa49273a0ea520ef853dffb7 100644
--- a/src/plugins/debugger/tcf/tcfengine.cpp
+++ b/src/plugins/debugger/tcf/tcfengine.cpp
@@ -203,13 +203,13 @@ void TcfEngine::exitDebugger()
     manager()->notifyInferiorExited();
 }
 
-void TcfEngine::startDebugger(const DebuggerStartParametersPtr &sp)
+void TcfEngine::startDebugger(const DebuggerRunControl *runControl)
 {
     setState(InferiorRunningRequested);
     showStatusMessage(tr("Running requested..."), 5000);
-    const int pos = sp->remoteChannel.indexOf(QLatin1Char(':'));
-    const QString host = sp->remoteChannel.left(pos);
-    const quint16 port = sp->remoteChannel.mid(pos + 1).toInt();
+    const int pos = runControl->sp().remoteChannel.indexOf(QLatin1Char(':'));
+    const QString host = runControl->sp().remoteChannel.left(pos);
+    const quint16 port = runControl->sp().remoteChannel.mid(pos + 1).toInt();
     //QTimer::singleShot(0, this, SLOT(runInferior()));
     m_socket->connectToHost(host, port);
     emit startSuccessful();
diff --git a/src/plugins/debugger/tcf/tcfengine.h b/src/plugins/debugger/tcf/tcfengine.h
index 79b8079d7d1f8834b73f1545e5390b4e4eb29dca..3bce2d6d11d2deb8b16d7390b566b1f724444ba2 100644
--- a/src/plugins/debugger/tcf/tcfengine.h
+++ b/src/plugins/debugger/tcf/tcfengine.h
@@ -75,7 +75,7 @@ private:
 
     void shutdown();
     void setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor *editor, int cursorPos);
-    void startDebugger(const DebuggerStartParametersPtr &sp);
+    void startDebugger(const DebuggerRunControl *runControl);
     void exitDebugger();
 
     void continueInferior();
diff --git a/src/plugins/qmlinspector/qmlinspector.cpp b/src/plugins/qmlinspector/qmlinspector.cpp
index 2d2aba6a48ba98ba2dc8dd3ab44816bb12d40bd8..0b98b7e90fa41d084bdd2457015e4edf075d4abe 100644
--- a/src/plugins/qmlinspector/qmlinspector.cpp
+++ b/src/plugins/qmlinspector/qmlinspector.cpp
@@ -38,8 +38,9 @@
 #include "components/expressionquerywidget.h"
 #include "components/objectpropertiesview.h"
 
-#include <debugger/debuggerrunner.h>
+#include <debugger/debuggermanager.h>
 #include <debugger/debuggermainwindow.h>
+#include <debugger/debuggerrunner.h>
 #include <debugger/debuggeruiswitcher.h>
 #include <debugger/debuggerconstants.h>
 
@@ -539,8 +540,8 @@ QString QmlInspector::attachToQmlViewerAsExternalApp(ProjectExplorer::Project *p
     ProjectExplorer::Environment customEnv = ProjectExplorer::Environment::systemEnvironment(); // empty env by default
     customEnv.set(QmlProjectManager::Constants::E_QML_DEBUG_SERVER_PORT, QString::number(m_settings.externalPort()));
 
-    Debugger::Internal::DebuggerRunControl *debuggableRunControl = createDebuggerRunControl(runConfig,
-                                                                                            dlg.qmlViewerPath(), dlg.qmlViewerArguments());
+    Debugger::DebuggerRunControl *debuggableRunControl =
+            createDebuggerRunControl(runConfig, dlg.qmlViewerPath(), dlg.qmlViewerArguments());
 
     return executeDebuggerRunControl(debuggableRunControl, &customEnv);
 }
@@ -575,11 +576,11 @@ QString QmlInspector::attachToExternalCppAppWithQml(ProjectExplorer::Project *pr
 
     ProjectExplorer::Environment customEnv = runConfig->environment();
     customEnv.set(QmlProjectManager::Constants::E_QML_DEBUG_SERVER_PORT, QString::number(m_settings.externalPort()));
-    Debugger::Internal::DebuggerRunControl *debuggableRunControl = createDebuggerRunControl(runConfig);
+    Debugger::DebuggerRunControl *debuggableRunControl = createDebuggerRunControl(runConfig);
     return executeDebuggerRunControl(debuggableRunControl, &customEnv);
 }
 
-QString QmlInspector::executeDebuggerRunControl(Debugger::Internal::DebuggerRunControl *debuggableRunControl, ProjectExplorer::Environment *environment)
+QString QmlInspector::executeDebuggerRunControl(Debugger::DebuggerRunControl *debuggableRunControl, ProjectExplorer::Environment *environment)
 {
     ProjectExplorer::ProjectExplorerPlugin *pex = ProjectExplorer::ProjectExplorerPlugin::instance();
 
@@ -597,26 +598,26 @@ QString QmlInspector::executeDebuggerRunControl(Debugger::Internal::DebuggerRunC
     return QString(tr("A valid run control was not registered in Qt Creator for this project run configuration."));;
 }
 
-Debugger::Internal::DebuggerRunControl *QmlInspector::createDebuggerRunControl(ProjectExplorer::RunConfiguration *runConfig,
-                                                                               const QString &executableFile, const QString &executableArguments)
+Debugger::DebuggerRunControl *QmlInspector::createDebuggerRunControl(ProjectExplorer::RunConfiguration *runConfig,
+                                                                     const QString &executableFile, const QString &executableArguments)
 {
     ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
-    const QList<Debugger::Internal::DebuggerRunControlFactory *> factories = pm->getObjects<Debugger::Internal::DebuggerRunControlFactory>();
+    const QList<Debugger::DebuggerRunControlFactory *> factories = pm->getObjects<Debugger::DebuggerRunControlFactory>();
     ProjectExplorer::RunControl *runControl = 0;
-    if (m_debugMode == QmlProjectWithCppPlugins) {
-
-        const Debugger::DebuggerStartParametersPtr sp(new Debugger::DebuggerStartParameters);
-        sp->startMode = Debugger::StartExternal;
-        sp->executable = executableFile;
-        sp->processArgs = executableArguments.split(QLatin1Char(' '));
 
+    if (m_debugMode == QmlProjectWithCppPlugins) {
+        Debugger::DebuggerStartParameters sp;
+        sp.startMode = Debugger::StartExternal;
+        sp.executable = executableFile;
+        sp.processArgs = executableArguments.split(QLatin1Char(' '));
         runControl = factories.first()->create(sp);
-        return qobject_cast<Debugger::Internal::DebuggerRunControl *>(runControl);
+        return qobject_cast<Debugger::DebuggerRunControl *>(runControl);
+    }
 
-    } else if (m_debugMode == CppProjectWithQmlEngines) {
+    if (m_debugMode == CppProjectWithQmlEngines) {
         if (factories.length() && factories.first()->canRun(runConfig, ProjectExplorer::Constants::DEBUGMODE)) {
             runControl = factories.first()->create(runConfig, ProjectExplorer::Constants::DEBUGMODE);
-            return qobject_cast<Debugger::Internal::DebuggerRunControl *>(runControl);
+            return qobject_cast<Debugger::DebuggerRunControl *>(runControl);
         }
     }
 
diff --git a/src/plugins/qmlinspector/qmlinspector.h b/src/plugins/qmlinspector/qmlinspector.h
index a0ebaa0a9fa3c244c2d5b905d649df323c3e3b79..5c59b2e7d23c5572aa68cc99534dc92877f94961 100644
--- a/src/plugins/qmlinspector/qmlinspector.h
+++ b/src/plugins/qmlinspector/qmlinspector.h
@@ -62,11 +62,10 @@ namespace ProjectExplorer {
 namespace Core {
     class IContext;
 }
+
 namespace Debugger {
-namespace Internal {
     class DebuggerRunControl;
-} // Internal
-} // Debugger
+}
 
 namespace Qml {
 
@@ -136,10 +135,10 @@ private slots:
 
 private:
     void updateMenuActions();
-    Debugger::Internal::DebuggerRunControl *createDebuggerRunControl(ProjectExplorer::RunConfiguration *runConfig,
-                                                                     const QString &executableFile = QString(),
-                                                                     const QString &executableArguments = QString());
-    QString executeDebuggerRunControl(Debugger::Internal::DebuggerRunControl *debuggableRunControl, ProjectExplorer::Environment *environment);
+    Debugger::DebuggerRunControl *createDebuggerRunControl(ProjectExplorer::RunConfiguration *runConfig,
+                                                           const QString &executableFile = QString(),
+                                                           const QString &executableArguments = QString());
+    QString executeDebuggerRunControl(Debugger::DebuggerRunControl *debuggableRunControl, ProjectExplorer::Environment *environment);
     QString attachToQmlViewerAsExternalApp(ProjectExplorer::Project *project);
     QString attachToExternalCppAppWithQml(ProjectExplorer::Project *project);
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
index 44b1beaa174a8f8e18e02e5515163fe1383518ff..92dbcf9800be4e8a49dc288be0977e46f8b52a96 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
@@ -42,6 +42,7 @@
 #include <coreplugin/icore.h>
 #include <coreplugin/progressmanager/progressmanager.h>
 #include <debugger/debuggermanager.h>
+#include <debugger/debuggerrunner.h>
 #include <extensionsystem/pluginmanager.h>
 #include <projectexplorer/toolchain.h>
 #include <utils/qtcassert.h>
@@ -459,7 +460,9 @@ void MaemoDebugRunControl::handleRemoteOutput(const QString &output)
 
 void MaemoDebugRunControl::startDebugging()
 {
-    m_debuggerManager->startNewDebugger(m_startParams);
+    Debugger::DebuggerRunControl *runControl =
+        new Debugger::DebuggerRunControl(m_debuggerManager, *m_startParams.data());
+    m_debuggerManager->startNewDebugger(runControl);
 }
 
 void MaemoDebugRunControl::stopInternal()
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
index b4ee8bd1312e50635a182ea7ccfccd3827bdf7a8..e5a6026cd20a195f67dd8717967f1ef1a7661e6a 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
@@ -52,6 +52,7 @@
 #include <projectexplorer/buildconfiguration.h>
 
 #include <debugger/debuggermanager.h>
+#include <debugger/debuggerrunner.h>
 
 #include <QtGui/QMessageBox>
 #include <QtGui/QMainWindow>
@@ -944,7 +945,10 @@ void S60DeviceDebugRunControl::initLauncher(const QString &executable, trk::Laun
 void S60DeviceDebugRunControl::handleLauncherFinished()
 {
     emit appendMessage(this, tr("Launching debugger..."), false);
-    Debugger::DebuggerManager::instance()->startNewDebugger(m_startParams);
+    Debugger::DebuggerManager *dm = Debugger::DebuggerManager::instance();
+    Debugger::DebuggerRunControl *runControl =
+        new Debugger::DebuggerRunControl(dm, *m_startParams.data());
+    dm->startNewDebugger(runControl);
 }
 
 void S60DeviceDebugRunControl::debuggingFinished()