diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index b4f27e77a1ff446944f35e797673c6343bf1621b..776896a1b8a66b34f2864e242637cba1e7d9364b 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -1223,8 +1223,11 @@ void DebuggerEngine::attemptBreakpointSynchronization()
 {
     for (int i = 0; i < breakHandler()->size(); i++) {
         BreakpointData *bp = breakHandler()->at(i);
-        if (!d->m_breakpoints.contains(bp->id))
+        if (!d->m_breakpoints.contains(bp->id)) {
             d->m_breakpoints.insert(bp->id, bp);
+            bp->state = BreakpointInsertionRequested;
+            addBreakpoint(*bp);
+        }
         QTC_ASSERT(d->m_breakpoints[bp->id] == bp, qDebug() << "corrupted breakpoint map");
         if (bp->uiDirty) {
             bp->uiDirty = false;