diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index 969b011a9c5187559f9eb6d678529d55a1f51ec1..baaef60d340cb8e00f03fc8f9aa19f1b857305f1 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -802,6 +802,7 @@ bool Breakpoint::isOneShot() const { return parameters().oneShot; } void Breakpoint::removeAlienBreakpoint() { + b->m_state = BreakpointRemoveProceeding; b->deleteThis(); } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 16a2300247cb0945472251d00d2d2f28ee9e6ae3..99135a09a7180da87b273257d9ab6d0bd7c33032 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -598,8 +598,9 @@ void GdbEngine::handleResponse(const QByteArray &buff) // This also triggers when a temporary breakpoint is hit. // We do not really want that, as this loses all information. // FIXME: Use a special marker for this case? - if (!bp.isOneShot()) - bp.removeAlienBreakpoint(); + // if (!bp.isOneShot()) ... is not sufficient. + // It keeps temporary "Jump" breakpoints alive. + bp.removeAlienBreakpoint(); } } else if (asyncClass == "cmd-param-changed") { // New since 2012-08-09