OSDN Git Service

Debugger[CDB]: Move breakpoint back from corrected location.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Wed, 11 May 2011 10:18:32 +0000 (12:18 +0200)
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>
Wed, 11 May 2011 10:19:31 +0000 (12:19 +0200)
Make it fully work.

Task-number: QTCREATORBUG-4842

src/plugins/debugger/breakhandler.cpp
src/plugins/debugger/breakhandler.h

index 89afb54..0e73359 100644 (file)
@@ -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();
 }
index a79b6af..33f0950 100644 (file)
@@ -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();