diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 830d3500b373d68648755102cbb71bb6e5ef4f2b..d7a76f255533068af42f9ba72abd1eeef8f065e4 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -90,14 +90,15 @@
 
 #include <extensionsystem/pluginmanager.h>
 
-#include <projectexplorer/project.h>
-#include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/abi.h>
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/toolchainmanager.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/projectexplorersettings.h>
+#include <projectexplorer/project.h>
 #include <projectexplorer/session.h>
 #include <projectexplorer/target.h>
-#include <projectexplorer/abi.h>
+#include <projectexplorer/toolchain.h>
+#include <projectexplorer/toolchainmanager.h>
 
 #include <qtsupport/qtsupportconstants.h>
 
@@ -719,8 +720,10 @@ public slots:
     void onModeChanged(Core::IMode *mode);
     void onCoreAboutToOpen();
     void showSettingsDialog();
+    void updateDebugWithoutDeployMenu();
 
     void debugProject();
+    void debugProjectWithoutDeploy();
     void debugProjectBreakMain();
     void startExternalApplication();
     void startRemoteCdbSession();
@@ -1027,6 +1030,7 @@ public:
     Utils::ProxyAction *m_visibleStartAction;
     Utils::ProxyAction *m_hiddenStopAction;
     QAction *m_startAction;
+    QAction *m_debugWithoutDeployAction;
     QAction *m_startExternalAction;
     QAction *m_startRemoteAction;
     QAction *m_attachToQmlPortAction;
@@ -1145,6 +1149,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(DebuggerPlugin *plugin) :
 
     m_reverseToolButton = 0;
     m_startAction = 0;
+    m_debugWithoutDeployAction = 0;
     m_startExternalAction = 0;
     m_startRemoteAction = 0;
     m_attachRemoteAction = 0;
@@ -1395,6 +1400,7 @@ void DebuggerPluginPrivate::onCurrentProjectChanged(Project *project)
     m_continueAction->setEnabled(false);
     m_exitAction->setEnabled(false);
     m_startAction->setEnabled(true);
+    m_debugWithoutDeployAction->setEnabled(true);
     m_visibleStartAction->setAction(m_startAction);
 }
 
@@ -1409,6 +1415,13 @@ void DebuggerPluginPrivate::debugProject()
         pe->runProject(pro, Constants::DEBUGMODE);
 }
 
+void DebuggerPluginPrivate::debugProjectWithoutDeploy()
+{
+    ProjectExplorerPlugin *pe = ProjectExplorerPlugin::instance();
+    if (Project *pro = pe->startupProject())
+        pe->runProject(pro, Constants::DEBUGMODE, true);
+}
+
 void DebuggerPluginPrivate::debugProjectBreakMain()
 {
     ProjectExplorerPlugin *pe = ProjectExplorerPlugin::instance();
@@ -2158,6 +2171,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
         m_continueAction->setEnabled(false);
         m_exitAction->setEnabled(false);
         m_startAction->setEnabled(true);
+        m_debugWithoutDeployAction->setEnabled(true);
         m_visibleStartAction->setAction(m_startAction);
         m_hiddenStopAction->setAction(m_undisturbableAction);
     } else if (state == InferiorStopOk) {
@@ -2166,6 +2180,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
         m_continueAction->setEnabled(true);
         m_exitAction->setEnabled(true);
         m_startAction->setEnabled(false);
+        m_debugWithoutDeployAction->setEnabled(false);
         m_visibleStartAction->setAction(m_continueAction);
         m_hiddenStopAction->setAction(m_exitAction);
     } else if (state == InferiorRunOk) {
@@ -2174,6 +2189,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
         m_continueAction->setEnabled(false);
         m_exitAction->setEnabled(true);
         m_startAction->setEnabled(false);
+        m_debugWithoutDeployAction->setEnabled(false);
         m_visibleStartAction->setAction(m_interruptAction);
         m_hiddenStopAction->setAction(m_interruptAction);
     } else if (state == DebuggerFinished) {
@@ -2182,6 +2198,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
         m_continueAction->setEnabled(false);
         m_exitAction->setEnabled(false);
         m_startAction->setEnabled(true);
+        m_debugWithoutDeployAction->setEnabled(true);
         m_visibleStartAction->setAction(m_startAction);
         m_hiddenStopAction->setAction(m_undisturbableAction);
         m_codeModelSnapshot = CPlusPlus::Snapshot();
@@ -2193,6 +2210,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
         m_continueAction->setEnabled(false);
         m_exitAction->setEnabled(true);
         m_startAction->setEnabled(false);
+        m_debugWithoutDeployAction->setEnabled(false);
         m_visibleStartAction->setAction(m_startAction);
         m_hiddenStopAction->setAction(m_undisturbableAction);
     } else {
@@ -2201,6 +2219,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
         m_continueAction->setEnabled(false);
         m_exitAction->setEnabled(false);
         m_startAction->setEnabled(false);
+        m_debugWithoutDeployAction->setEnabled(false);
         m_visibleStartAction->setAction(m_undisturbableAction);
         m_hiddenStopAction->setAction(m_undisturbableAction);
     }
@@ -2288,6 +2307,7 @@ void DebuggerPluginPrivate::updateDebugActions()
     const bool canRun = pe->canRun(project, debugMode);
     m_startAction->setEnabled(canRun);
     m_startAction->setToolTip(canRun ? QString() : pe->cannotRunReason(project, debugMode));
+    m_debugWithoutDeployAction->setEnabled(canRun);
 
     // Step into/next: Start and break at 'main' unless a debugger is running.
     if (m_snapshotHandler->currentIndex() < 0) {
@@ -2342,6 +2362,12 @@ void DebuggerPluginPrivate::showSettingsDialog()
         _(DEBUGGER_COMMON_SETTINGS_ID));
 }
 
+void DebuggerPluginPrivate::updateDebugWithoutDeployMenu()
+{
+    const bool state = ProjectExplorerPlugin::instance()->projectExplorerSettings().deployBeforeRun;
+    m_debugWithoutDeployAction->setVisible(state);
+}
+
 void DebuggerPluginPrivate::dumpLog()
 {
     QString fileName = QFileDialog::getSaveFileName(mainWindow(),
@@ -2952,6 +2978,10 @@ void DebuggerPluginPrivate::extensionsInitialized()
     act->setText(tr("Start Debugging"));
     connect(act, SIGNAL(triggered()), this, SLOT(debugProject()));
 
+    act = m_debugWithoutDeployAction = new QAction(this);
+    act->setText(tr("Debug Without Deployment"));
+    connect(act, SIGNAL(triggered()), this, SLOT(debugProjectWithoutDeploy()));
+
     // Handling of external applications.
     act = m_startExternalAction = new QAction(this);
     act->setText(tr("Start and Debug External Application..."));
@@ -3018,6 +3048,11 @@ void DebuggerPluginPrivate::extensionsInitialized()
     ModeManager *modeManager = ModeManager::instance();
     modeManager->addAction(m_visibleStartAction, Constants::P_ACTION_DEBUG);
 
+    cmd = am->registerAction(m_debugWithoutDeployAction,
+        "Debugger.DebugWithoutDeploy", globalcontext);
+    cmd->setAttribute(Command::CA_Hide);
+    mstart->addAction(cmd, CC::G_DEFAULT_ONE);
+
     cmd = am->registerAction(m_attachExternalAction,
         "Debugger.AttachExternal", globalcontext);
     cmd->setAttribute(Command::CA_Hide);
@@ -3238,7 +3273,8 @@ void DebuggerPluginPrivate::extensionsInitialized()
         SLOT(onModeChanged(Core::IMode*)));
     connect(ICore::instance(), SIGNAL(coreAboutToOpen()),
         SLOT(onCoreAboutToOpen()));
-
+    connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(settingsChanged()),
+            this, SLOT(updateDebugWithoutDeployMenu()));
 
     // Debug mode setup
     DebugMode *debugMode = new DebugMode;
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 9a2979f284911043c431d290b0dbcdd5724c5ec2..c4a1e295fff11856da44a7d1ffd03164ff4c2db6 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -196,6 +196,7 @@ struct ProjectExplorerPluginPrivate {
     QAction *m_cleanSessionAction;
     QAction *m_runAction;
     QAction *m_runActionContextMenu;
+    QAction *m_runWithoutDeployAction;
     QAction *m_cancelBuildAction;
     QAction *m_addNewFileAction;
     QAction *m_addExistingFilesAction;
@@ -786,6 +787,11 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_RUN);
     msubProjectContextMenu->addAction(cmd, Constants::G_PROJECT_RUN);
 
+    // run without deployment action
+    d->m_runWithoutDeployAction = new QAction(tr("Run Without Deployment"), this);
+    cmd = am->registerAction(d->m_runWithoutDeployAction, Constants::RUNWITHOUTDEPLOY, globalcontext);
+    mbuild->addAction(cmd, Constants::G_BUILD_RUN);
+
     // cancel build action
     d->m_cancelBuildAction = new QAction(tr("Cancel Build"), this);
     cmd = am->registerAction(d->m_cancelBuildAction, Constants::CANCELBUILD, globalcontext);
@@ -958,6 +964,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     connect(d->m_cleanSessionAction, SIGNAL(triggered()), this, SLOT(cleanSession()));
     connect(d->m_runAction, SIGNAL(triggered()), this, SLOT(runProject()));
     connect(d->m_runActionContextMenu, SIGNAL(triggered()), this, SLOT(runProjectContextMenu()));
+    connect(d->m_runWithoutDeployAction, SIGNAL(triggered()), this, SLOT(runProjectWithoutDeploy()));
     connect(d->m_cancelBuildAction, SIGNAL(triggered()), this, SLOT(cancelBuild()));
     connect(d->m_unloadAction, SIGNAL(triggered()), this, SLOT(unloadProject()));
     connect(d->m_clearSession, SIGNAL(triggered()), this, SLOT(clearSession()));
@@ -975,6 +982,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     connect(d->m_setStartupProjectAction, SIGNAL(triggered()), this, SLOT(setStartupProject()));
 
     connect(this, SIGNAL(updateRunActions()), this, SLOT(slotUpdateRunActions()));
+    connect(this, SIGNAL(settingsChanged()), this, SLOT(updateRunWithoutDeployMenu()));
 
     updateActions();
 
@@ -1114,6 +1122,11 @@ void ProjectExplorerPlugin::updateVariable(const QString &variable)
     }
 }
 
+void ProjectExplorerPlugin::updateRunWithoutDeployMenu()
+{
+    d->m_runWithoutDeployAction->setVisible(d->m_projectExplorerSettings.deployBeforeRun);
+}
+
 ExtensionSystem::IPlugin::ShutdownFlag ProjectExplorerPlugin::aboutToShutdown()
 {
     d->m_proWindow->aboutToShutdown(); // disconnect from session
@@ -1674,6 +1687,7 @@ void ProjectExplorerPlugin::updateActions()
     d->m_projectSelectorActionMenu->setEnabled(!session()->projects().isEmpty());
 
     updateDeployActions();
+    updateRunWithoutDeployMenu();
 }
 
 // NBS TODO check projectOrder()
@@ -1870,6 +1884,11 @@ void ProjectExplorerPlugin::runProject()
     runProject(startupProject(), ProjectExplorer::Constants::RUNMODE);
 }
 
+void ProjectExplorerPlugin::runProjectWithoutDeploy()
+{
+    runProject(startupProject(), ProjectExplorer::Constants::RUNMODE, true);
+}
+
 void ProjectExplorerPlugin::runProjectContextMenu()
 {
     ProjectNode *projectNode = qobject_cast<ProjectNode*>(d->m_currentNode);
@@ -1986,21 +2005,23 @@ bool ProjectExplorerPlugin::hasDeploySettings(Project *pro)
     return false;
 }
 
-void ProjectExplorerPlugin::runProject(Project *pro, const QString &mode)
+void ProjectExplorerPlugin::runProject(Project *pro, const QString &mode, const bool forceSkipDeploy)
 {
     if (!pro)
         return;
 
-    runRunConfiguration(pro->activeTarget()->activeRunConfiguration(), mode);
+    runRunConfiguration(pro->activeTarget()->activeRunConfiguration(), mode, forceSkipDeploy);
 }
 
-void ProjectExplorerPlugin::runRunConfiguration(ProjectExplorer::RunConfiguration *rc, const QString &mode)
+void ProjectExplorerPlugin::runRunConfiguration(ProjectExplorer::RunConfiguration *rc,
+                                                const QString &mode,
+                                                const bool forceSkipDeploy)
 {
     if (!rc->isEnabled())
         return;
 
     QStringList stepIds;
-    if (d->m_projectExplorerSettings.deployBeforeRun) {
+    if (!forceSkipDeploy && d->m_projectExplorerSettings.deployBeforeRun) {
         if (d->m_projectExplorerSettings.buildBeforeDeploy)
             stepIds << Constants::BUILDSTEPS_BUILD;
         stepIds << Constants::BUILDSTEPS_DEPLOY;
@@ -2226,8 +2247,10 @@ QString ProjectExplorerPlugin::cannotRunReason(Project *project, const QString &
 void ProjectExplorerPlugin::slotUpdateRunActions()
 {
     Project *project = startupProject();
-    d->m_runAction->setEnabled(canRun(project, ProjectExplorer::Constants::RUNMODE));
+    const bool state = canRun(project, ProjectExplorer::Constants::RUNMODE);
+    d->m_runAction->setEnabled(state);
     d->m_runAction->setToolTip(cannotRunReason(project, ProjectExplorer::Constants::RUNMODE));
+    d->m_runWithoutDeployAction->setEnabled(state);
 }
 
 void ProjectExplorerPlugin::cancelBuild()
@@ -2797,7 +2820,6 @@ void ProjectExplorerPlugin::setSession(QAction *action)
         d->m_session->loadSession(session);
 }
 
-
 void ProjectExplorerPlugin::setProjectExplorerSettings(const Internal::ProjectExplorerSettings &pes)
 {
     if (d->m_projectExplorerSettings == pes)
diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h
index b438e53c10293caae315c7c70859a2d7691c1938..ad9a2f76f0948c22187e1b38662ba9fbdb5b762a 100644
--- a/src/plugins/projectexplorer/projectexplorer.h
+++ b/src/plugins/projectexplorer/projectexplorer.h
@@ -117,8 +117,9 @@ public:
 
     bool canRun(Project *pro, const QString &runMode);
     QString cannotRunReason(Project *project, const QString &runMode);
-    void runProject(Project *pro, const QString &mode);
-    void runRunConfiguration(ProjectExplorer::RunConfiguration *rc, const QString &mode);
+    void runProject(Project *pro, const QString &mode, const bool forceSkipDeploy = false);
+    void runRunConfiguration(ProjectExplorer::RunConfiguration *rc, const QString &mode,
+                             const bool forceSkipDeploy = false);
 
     void addExistingFiles(ProjectExplorer::ProjectNode *projectNode, const QStringList &filePaths);
     void addExistingFiles(const QStringList &filePaths);
@@ -183,6 +184,7 @@ private slots:
     void restoreSession();
     void loadSession(const QString &session);
     void runProject();
+    void runProjectWithoutDeploy();
     void runProjectContextMenu();
     void savePersistentSettings();
 
@@ -223,6 +225,7 @@ private slots:
     void updateActions();
     void loadCustomWizards();
     void updateVariable(const QString &variable);
+    void updateRunWithoutDeployMenu();
 
     void publishProject();
     void updateWelcomePage();
diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h
index 35ae898d8c8527dc1e9443cf4c652d2054a189fe..26c6108fcbb4bb61a8182fcdf32b8e7f045879a6 100644
--- a/src/plugins/projectexplorer/projectexplorerconstants.h
+++ b/src/plugins/projectexplorer/projectexplorerconstants.h
@@ -67,6 +67,7 @@ const char CLEANCM[]              = "ProjectExplorer.CleanCM";
 const char CLEANSESSION[]         = "ProjectExplorer.CleanSession";
 const char CANCELBUILD[]          = "ProjectExplorer.CancelBuild";
 const char RUN[]                  = "ProjectExplorer.Run";
+const char RUNWITHOUTDEPLOY[]     = "ProjectExplorer.RunWithoutDeploy";
 const char RUNCONTEXTMENU[]       = "ProjectExplorer.RunContextMenu";
 const char STOP[]                 = "ProjectExplorer.Stop";
 const char ADDNEWFILE[]           = "ProjectExplorer.AddNewFile";