diff --git a/src/plugins/analyzerbase/analyzermanager.cpp b/src/plugins/analyzerbase/analyzermanager.cpp
index 76dce30602018701e4c9e4e1a4875bfaf9351cad..0c7f747912553c7518494b8d57dbe0ca668fb7e6 100644
--- a/src/plugins/analyzerbase/analyzermanager.cpp
+++ b/src/plugins/analyzerbase/analyzermanager.cpp
@@ -754,12 +754,10 @@ void AnalyzerManager::handleToolFinished()
 }
 
 AnalyzerRunControl *AnalyzerManager::createRunControl(
-    const AnalyzerStartParameters &sp,
-    ProjectExplorer::RunConfiguration *runConfiguration,
-    ProjectExplorer::RunMode runMode)
+    const AnalyzerStartParameters &sp, RunConfiguration *runConfiguration)
 {
     foreach (IAnalyzerTool *tool, m_instance->d->m_tools)
-        if (tool->runMode() == runMode)
+        if (tool->runMode() == sp.runMode)
             return tool->createRunControl(sp, runConfiguration);
     QTC_CHECK(false);
     return 0;
diff --git a/src/plugins/analyzerbase/analyzermanager.h b/src/plugins/analyzerbase/analyzermanager.h
index ec88567b74ba96980fcb7ab0aa9ac5b1bd7c6597..940997d3ebb0082a019b3975d52c9202d73b6bd9 100644
--- a/src/plugins/analyzerbase/analyzermanager.h
+++ b/src/plugins/analyzerbase/analyzermanager.h
@@ -93,7 +93,7 @@ public:
     static QAction *stopAction();
 
     static AnalyzerRunControl *createRunControl(const AnalyzerStartParameters &sp,
-        ProjectExplorer::RunConfiguration *runConfiguration, ProjectExplorer::RunMode runMode);
+        ProjectExplorer::RunConfiguration *runConfiguration);
 
 private:
     friend class AnalyzerManagerPrivate;
diff --git a/src/plugins/android/androidanalyzesupport.cpp b/src/plugins/android/androidanalyzesupport.cpp
index 14dac95326a213bf2671d7896bad14178c1116ae..dc71f02adbd9ac496018403710aa5b40a2bfc434 100644
--- a/src/plugins/android/androidanalyzesupport.cpp
+++ b/src/plugins/android/androidanalyzesupport.cpp
@@ -51,7 +51,7 @@ namespace Android {
 namespace Internal {
 
 RunControl *AndroidAnalyzeSupport::createAnalyzeRunControl(AndroidRunConfiguration *runConfig,
-                                                           RunMode runMode, QString *errorMessage)
+                                                           RunMode runMode)
 {
     Target *target = runConfig->target();
     AnalyzerStartParameters params;
@@ -68,8 +68,7 @@ RunControl *AndroidAnalyzeSupport::createAnalyzeRunControl(AndroidRunConfigurati
         params.startMode = StartQmlRemote;
     }
 
-    AnalyzerRunControl *analyzerRunControl =
-            AnalyzerManager::createRunControl(params, runConfig, runMode);
+    AnalyzerRunControl *analyzerRunControl = AnalyzerManager::createRunControl(params, runConfig);
     (void) new AndroidAnalyzeSupport(runConfig, analyzerRunControl);
     return analyzerRunControl;
 }
diff --git a/src/plugins/android/androidanalyzesupport.h b/src/plugins/android/androidanalyzesupport.h
index 2e96f3b5a1b78eb245211ab203cf2a0d045836de..0f0f86f4bbb7c9c62b12b3467a78ed6e4f644fea 100644
--- a/src/plugins/android/androidanalyzesupport.h
+++ b/src/plugins/android/androidanalyzesupport.h
@@ -48,7 +48,7 @@ class AndroidAnalyzeSupport : public AndroidRunSupport
 
 public:
     static ProjectExplorer::RunControl *createAnalyzeRunControl(AndroidRunConfiguration *runConfig,
-                                                                ProjectExplorer::RunMode runMode, QString *errorMessage);
+                                                                ProjectExplorer::RunMode runMode);
 
     AndroidAnalyzeSupport(AndroidRunConfiguration *runConfig,
         Analyzer::AnalyzerRunControl *runControl);
diff --git a/src/plugins/android/androidrunfactories.cpp b/src/plugins/android/androidrunfactories.cpp
index 65c623773957b4ba2d21fb04cce5a21c92f904e2..a76656c33a36466defc07da9aea7a39a9fabd6ef 100644
--- a/src/plugins/android/androidrunfactories.cpp
+++ b/src/plugins/android/androidrunfactories.cpp
@@ -168,7 +168,7 @@ RunControl *AndroidRunControlFactory::create(RunConfiguration *runConfig,
     case DebugRunMode:
         return AndroidDebugSupport::createDebugRunControl(rc, errorMessage);
     case QmlProfilerRunMode:
-        return AndroidAnalyzeSupport::createAnalyzeRunControl(rc, mode, errorMessage);
+        return AndroidAnalyzeSupport::createAnalyzeRunControl(rc, mode);
     case NoRunMode:
     case DebugRunModeWithBreakOnMain:
     case CallgrindRunMode:
diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
index 7c5246c1aeb2b1f3294ecc61dd2ae06564c34680..86f0583e81a70e98b007849142fd4c0dd93872d9 100644
--- a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
@@ -123,7 +123,7 @@ RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfigurat
     const IDevice::ConstPtr device = DeviceKitInformation::device(runConfiguration->target()->kit());
     QTC_ASSERT(device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE, return 0);
 
-    AnalyzerRunControl *rc = AnalyzerManager::createRunControl(sp, runConfiguration, mode);
+    AnalyzerRunControl *rc = AnalyzerManager::createRunControl(sp, runConfiguration);
     QmlProfilerRunControl *engine = qobject_cast<QmlProfilerRunControl *>(rc);
     if (!engine) {
         delete rc;
diff --git a/src/plugins/qnx/qnxruncontrolfactory.cpp b/src/plugins/qnx/qnxruncontrolfactory.cpp
index 29ecbeb031d421edb39bd16a816b3a03a8f92e03..069577550edf6e7b85f1750aecaf4b404dba7f3e 100644
--- a/src/plugins/qnx/qnxruncontrolfactory.cpp
+++ b/src/plugins/qnx/qnxruncontrolfactory.cpp
@@ -63,7 +63,7 @@ using namespace ProjectExplorer;
 using namespace Qnx;
 using namespace Qnx::Internal;
 
-DebuggerStartParameters createStartParameters(const QnxRunConfiguration *runConfig)
+static DebuggerStartParameters createDebuggerStartParameters(const QnxRunConfiguration *runConfig)
 {
     DebuggerStartParameters params;
     Target *target = runConfig->target();
@@ -114,7 +114,7 @@ DebuggerStartParameters createStartParameters(const QnxRunConfiguration *runConf
     return params;
 }
 
-AnalyzerStartParameters createAnalyzerStartParameters(const QnxRunConfiguration *runConfig, RunMode mode)
+static AnalyzerStartParameters createAnalyzerStartParameters(const QnxRunConfiguration *runConfig, RunMode mode)
 {
     AnalyzerStartParameters params;
     Target *target = runConfig->target();
@@ -178,7 +178,7 @@ RunControl *QnxRunControlFactory::create(RunConfiguration *runConfig, RunMode mo
     case NormalRunMode:
         return new QnxRunControl(rc);
     case DebugRunMode: {
-        const DebuggerStartParameters params = createStartParameters(rc);
+        const DebuggerStartParameters params = createDebuggerStartParameters(rc);
         DebuggerRunControl * const runControl = DebuggerPlugin::createDebugger(params, rc, errorMessage);
         if (!runControl)
             return 0;
@@ -190,7 +190,7 @@ RunControl *QnxRunControlFactory::create(RunConfiguration *runConfig, RunMode mo
     }
     case QmlProfilerRunMode: {
         const AnalyzerStartParameters params = createAnalyzerStartParameters(rc, mode);
-        AnalyzerRunControl *runControl = AnalyzerManager::createRunControl(params, runConfig, mode);
+        AnalyzerRunControl *runControl = AnalyzerManager::createRunControl(params, runConfig);
         QnxAnalyzeSupport * const analyzeSupport = new QnxAnalyzeSupport(rc, runControl);
         connect(runControl, SIGNAL(finished()), analyzeSupport, SLOT(handleProfilingFinished()));
         return runControl;
diff --git a/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp b/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp
index 6f0cee31a44ed7c8475d5c5e778fdb8b5ddbb6f5..6372b8cae0904973a6aa7fda20bbb25b39bc5b23 100644
--- a/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp
+++ b/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp
@@ -108,7 +108,7 @@ RunControl *RemoteLinuxRunControlFactory::create(RunConfiguration *runConfig, Ru
     }
     case QmlProfilerRunMode: {
         AnalyzerStartParameters params = RemoteLinuxAnalyzeSupport::startParameters(rc, mode);
-        AnalyzerRunControl *runControl = AnalyzerManager::createRunControl(params, runConfig, mode);
+        AnalyzerRunControl *runControl = AnalyzerManager::createRunControl(params, runConfig);
         RemoteLinuxAnalyzeSupport * const analyzeSupport =
                 new RemoteLinuxAnalyzeSupport(rc, runControl, mode);
         connect(runControl, SIGNAL(finished()), analyzeSupport, SLOT(handleProfilingFinished()));
diff --git a/src/plugins/valgrind/valgrindruncontrolfactory.cpp b/src/plugins/valgrind/valgrindruncontrolfactory.cpp
index eb98039e1ee7cfc9cc3aaf82d36bf046e003d8d1..b9e3cacca88a73847fd93210df65ca0cf58ea98d 100644
--- a/src/plugins/valgrind/valgrindruncontrolfactory.cpp
+++ b/src/plugins/valgrind/valgrindruncontrolfactory.cpp
@@ -71,6 +71,7 @@ RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration
 
     AnalyzerStartParameters sp;
     sp.displayName = runConfiguration->displayName();
+    sp.runMode = mode;
     if (LocalApplicationRunConfiguration *rc1 =
             qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)) {
         EnvironmentAspect *aspect = runConfiguration->extraAspect<EnvironmentAspect>();
@@ -102,7 +103,7 @@ RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration
         QTC_ASSERT(false, return 0);
     }
 
-    return AnalyzerManager::createRunControl(sp, runConfiguration, mode);
+    return AnalyzerManager::createRunControl(sp, runConfiguration);
 }
 
 IRunConfigurationAspect *ValgrindRunControlFactory::createRunConfigurationAspect(RunConfiguration *rc)