diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index b0b2b60e04c0ee727267ad82064d25ec3257041f..782343b7bafde7b0389cec72581bb65e786ea3ab 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -237,6 +237,15 @@ void DebuggerRunControl::setCustomEnvironment(Utils::Environment env)
 void DebuggerRunControl::start()
 {
     QTC_ASSERT(d->m_engine, return);
+    // User canceled input dialog asking for executable when working on library project.
+    if (d->m_engine->startParameters().startMode == StartInternal
+        && d->m_engine->startParameters().executable.isEmpty()) {
+        appendMessage(tr("No executable specified.\n"), ErrorMessageFormat);
+        emit started();
+        emit finished();
+        return;
+    }
+
     debuggerCore()->runControlStarted(d->m_engine);
 
     // We might get a synchronous startFailed() notification on Windows,
diff --git a/src/plugins/projectexplorer/localapplicationruncontrol.cpp b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
index 637070269cf5c6e3bf5d00f947a42be729c2fd8e..95010da2e6ef555d749ef61a385ea3f37c4e33c8 100644
--- a/src/plugins/projectexplorer/localapplicationruncontrol.cpp
+++ b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
@@ -103,11 +103,15 @@ LocalApplicationRunControl::~LocalApplicationRunControl()
 
 void LocalApplicationRunControl::start()
 {
-    m_applicationLauncher.start(m_runMode, m_executable, m_commandLineArguments);
     emit started();
-
-    QString msg = tr("Starting %1...\n").arg(QDir::toNativeSeparators(m_executable));
-    appendMessage(msg, NormalMessageFormat);
+    if (m_executable.isEmpty()) {
+        appendMessage(tr("No executable specified.\n"), ErrorMessageFormat);
+        emit finished();
+    }  else {
+        m_applicationLauncher.start(m_runMode, m_executable, m_commandLineArguments);
+        QString msg = tr("Starting %1...\n").arg(QDir::toNativeSeparators(m_executable));
+        appendMessage(msg, NormalMessageFormat);
+    }
 }
 
 LocalApplicationRunControl::StopResult LocalApplicationRunControl::stop()