OSDN Git Service

Debugger[CDB]: Fix breakpoint context menu for CDB.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Wed, 16 Mar 2011 12:38:27 +0000 (13:38 +0100)
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>
Wed, 16 Mar 2011 12:39:58 +0000 (13:39 +0100)
Immediately report known data back when settings breakpoints
so that line number/enabled is correct in the handler.

src/plugins/debugger/cdb/cdbengine.cpp

index ffa8294..b19218b 100644 (file)
@@ -2366,11 +2366,16 @@ void CdbEngine::attemptBreakpointSynchronization()
             handler->notifyBreakpointInsertOk(id);
             m_pendingBreakpointMap.insert(id, response);
             addedChanged = true;
+            // Ensure enabled/disabled is correct in handler and line number is there.
+            handler->setResponse(id, response);
             if (debugBreakpoints)
                 qDebug("Adding %llu %s\n", id, qPrintable(response.toString()));
             break;
         case BreakpointChangeRequested:
             handler->notifyBreakpointChangeProceeding(id);
+            if (debugBreakpoints)
+                qDebug("Changing %llu:\n    %s\nTo %s\n", id, qPrintable(handler->response(id).toString()),
+                       qPrintable(parameters.toString()));
             if (parameters.enabled != handler->response(id).enabled) {
                 // Change enabled/disabled breakpoints without triggering update.
                 postCommand((parameters.enabled ? "be " : "bd ") + QByteArray::number(id), 0);
@@ -2385,8 +2390,6 @@ void CdbEngine::attemptBreakpointSynchronization()
                 m_pendingBreakpointMap.insert(id, response);
             }
             handler->notifyBreakpointChangeOk(id);
-            if (debugBreakpoints)
-                qDebug("Changing %llu %s\n", id, qPrintable(response.toString()));
             break;
         case BreakpointRemoveRequested:
             postCommand("bc " + QByteArray::number(id), 0);
@@ -2639,6 +2642,8 @@ void CdbEngine::handleBreakPoints(const GdbMi &value)
                 currentResponse.pending = reportedResponse.pending;
                 currentResponse.enabled = reportedResponse.enabled;
                 formatCdbBreakPointResponse(id, currentResponse, str);
+                if (debugBreakpoints)
+                    qDebug("  Setting for %llu: %s\n", id, qPrintable(currentResponse.toString()));
                 handler->setResponse(id, currentResponse);
                 m_pendingBreakpointMap.erase(it);
             }