diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 034dd07469e73c6c7110ed3222f2f666590ce019..887a77e764bc97eca771275011a3e036e895d120 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -1230,29 +1230,34 @@ void ProjectExplorerPlugin::executeRunConfiguration(const QSharedPointer<RunConf
         emit aboutToExecuteProject(runConfiguration->project());
 
         RunControl *control = runControlFactory->create(runConfiguration, runMode);
-        d->m_outputPane->createNewOutputWindow(control);
-        if (runMode == ProjectExplorer::Constants::RUNMODE)
-            d->m_outputPane->popup(false);
-        d->m_outputPane->showTabFor(control);
-
-        connect(control, SIGNAL(addToOutputWindow(RunControl *, const QString &)),
-                this, SLOT(addToApplicationOutputWindow(RunControl *, const QString &)));
-        connect(control, SIGNAL(addToOutputWindowInline(RunControl *, const QString &)),
-                this, SLOT(addToApplicationOutputWindowInline(RunControl *, const QString &)));
-        connect(control, SIGNAL(error(RunControl *, const QString &)),
-                this, SLOT(addErrorToApplicationOutputWindow(RunControl *, const QString &)));
-        connect(control, SIGNAL(finished()),
-                this, SLOT(runControlFinished()));
-
-        if (runMode == ProjectExplorer::Constants::DEBUGMODE)
-            d->m_debuggingRunControl = control;
-
-        control->start();
-        updateRunAction();
+        startRunControl(control, runMode);
     }
 
 }
 
+void ProjectExplorerPlugin::startRunControl(RunControl *runControl, const QString &runMode)
+{
+    d->m_outputPane->createNewOutputWindow(runControl);
+    if (runMode == ProjectExplorer::Constants::RUNMODE)
+        d->m_outputPane->popup(false);
+    d->m_outputPane->showTabFor(runControl);
+
+    connect(runControl, SIGNAL(addToOutputWindow(RunControl *, const QString &)),
+            this, SLOT(addToApplicationOutputWindow(RunControl *, const QString &)));
+    connect(runControl, SIGNAL(addToOutputWindowInline(RunControl *, const QString &)),
+            this, SLOT(addToApplicationOutputWindowInline(RunControl *, const QString &)));
+    connect(runControl, SIGNAL(error(RunControl *, const QString &)),
+            this, SLOT(addErrorToApplicationOutputWindow(RunControl *, const QString &)));
+    connect(runControl, SIGNAL(finished()),
+            this, SLOT(runControlFinished()));
+
+    if (runMode == ProjectExplorer::Constants::DEBUGMODE)
+        d->m_debuggingRunControl = runControl;
+
+    runControl->start();
+    updateRunAction();
+}
+
 void ProjectExplorerPlugin::buildQueueFinished(bool success)
 {
     if (debug)
diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h
index 6066b9e69d80582f8348d0902a84a5cb4600bdb0..33320cb4f379c9561d1ea84f913e3797eb56b59c 100644
--- a/src/plugins/projectexplorer/projectexplorer.h
+++ b/src/plugins/projectexplorer/projectexplorer.h
@@ -184,9 +184,12 @@ private slots:
     void loadProject(const QString &project) { openProject(project); }
     void currentModeChanged(Core::IMode *mode);
 
+    void ProjectExplorerPlugin::startRunControl(RunControl *runControl, const QString &mode);
+
 private:
     void runProjectImpl(Project *pro);
     void executeRunConfiguration(const QSharedPointer<RunConfiguration> &, const QString &mode);
+
     void setCurrent(Project *project, QString filePath, Node *node);
 
     QStringList allFilesWithDependencies(Project *pro);