diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index 89afb54d577..0e73359e27a 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -781,6 +781,15 @@ static bool isAllowedTransition(BreakpointState from, BreakpointState to) return false; } +bool BreakHandler::isEngineRunning(BreakpointId id) const +{ + if (const DebuggerEngine *e = engine(id)) { + const DebuggerState state = e->state(); + return state != DebuggerFinished && state != DebuggerNotReady; + } + return false; +} + void BreakHandler::setState(BreakpointId id, BreakpointState state) { Iterator it = m_storage.find(id); @@ -1028,10 +1037,8 @@ void BreakHandler::updateLineNumberFromMarker(BreakpointId id, int lineNumber) // Ignore updates to the "real" line number while the debugger is // running, as this can be triggered by moving the breakpoint to // the next line that generated code. - if (it->response.number == 0) { - // FIXME: Do we need yet another data member? + if (!isEngineRunning(id)) it->data.lineNumber = lineNumber; - } updateMarker(id); emit layoutChanged(); } diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h index a79b6af15d2..33f09507bc2 100644 --- a/src/plugins/debugger/breakhandler.h +++ b/src/plugins/debugger/breakhandler.h @@ -168,6 +168,7 @@ private: QVariant headerData(int section, Qt::Orientation orientation, int role) const; Qt::ItemFlags flags(const QModelIndex &index) const; + bool isEngineRunning(BreakpointId id) const; void setState(BreakpointId id, BreakpointState state); void loadBreakpoints(); void saveBreakpoints();