diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index 2e37685a7db4be19b1e61e8e253858ea1393cc37..597c06480a4333617839e41432d62c98670616af 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -986,6 +986,8 @@ void BreakHandler::notifyBreakpointReleased(BreakpointModelId id)
             || it->data.type == WatchpointAtExpression
             || it->data.type == BreakpointByAddress)
         it->data.enabled = false;
+    else
+        it->data.address = 0;
     layoutChanged();
 }
 
@@ -1073,7 +1075,7 @@ void BreakHandler::handleAlienBreakpoint(const BreakpointResponse &response, Deb
         else
             setResponse(id, response);
     } else {
-        BreakpointModelId id(++currentId);
+        id = BreakpointModelId(++currentId);
         const int row = m_storage.size();
 
         beginInsertRows(QModelIndex(), row, row);
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 72fb471a7baa11147a64552167865f164307fcbc..197b6086cf73bc441cc29690694675ae516e98e4 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -2524,6 +2524,18 @@ void GdbEngine::updateResponse(BreakpointResponse &response, const GdbMi &bkpt)
                     response.type = WatchpointAtExpression;
                     response.expression = QString::fromLocal8Bit(what);
                 }
+            } else if (child.data() == "breakpoint") {
+                QByteArray catchType = bkpt["catch-type"].data();
+                if (catchType == "throw")
+                    response.type = BreakpointAtThrow;
+                else if (catchType == "catch")
+                    response.type = BreakpointAtCatch;
+                else if (catchType == "fork")
+                    response.type = BreakpointAtFork;
+                else if (catchType == "exec")
+                    response.type = BreakpointAtExec;
+                else if (catchType == "syscall")
+                    response.type = BreakpointAtSysCall;
             }
         } else if (child.hasName("original-location")) {
             originalLocation = child.data();