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();