summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/debugger/breakhandler.cpp4
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp12
2 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index 2e37685a7d..597c06480a 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 72fb471a7b..197b6086cf 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();