diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 7c88aca176d634b7a622094c36451f60f503f06f..846f64803c69db39e14c8e33d45f4a47ec10dfec 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -248,6 +248,23 @@ void DebuggerRunControl::start()
         return;
     }
 
+    foreach (const BreakpointId &id, debuggerCore()->breakHandler()->allBreakpointIds()) {
+        if (!d->m_engine->acceptsBreakpoint(id)) {
+            debuggerCore()->showMessage(DebuggerPlugin::tr("Some breakpoints cannot be handled by the current debugger, and will be ignored."), LogWarning);
+
+            int result = QMessageBox::warning(debuggerCore()->mainWindow(),
+                                          DebuggerPlugin::tr("Warning"), DebuggerPlugin::tr("Some breakpoints cannot be handled by the debugger, and will be ignored. Do you want to continue?"),
+                                          QMessageBox::Ok | QMessageBox::Cancel);
+
+            if (result == QMessageBox::Cancel) {
+                emit started();
+                emit finished();
+                return;
+            }
+            break;
+        }
+    }
+
     debuggerCore()->runControlStarted(d->m_engine);
 
     // We might get a synchronous startFailed() notification on Windows,