Fix GDB/MI "break-delete" command behavior for function breakpoints.
authorMikhail Kurinnoi <m.kurinnoi@samsung.com>
Fri, 12 Apr 2019 10:32:42 +0000 (13:32 +0300)
committerMikhail Kurinnoi <m.kurinnoi@samsung.com>
Fri, 12 Apr 2019 10:32:42 +0000 (13:32 +0300)
src/debug/netcoredbg/miprotocol.cpp

index 497b3e8edbadc0a17768dab3f518bc50823d7fc4..48c2e72d55dfe95817f3c107395656c0c03dc6e0 100644 (file)
@@ -633,6 +633,18 @@ void MIProtocol::DeleteBreakpoints(const std::unordered_set<uint32_t> &ids)
         std::vector<Breakpoint> tmpBreakpoints;
         m_debugger->SetBreakpoints(filename, remainingBreakpoints, tmpBreakpoints);
     }
+
+    std::vector<FunctionBreakpoint> remainingFuncBreakpoints;
+    for (auto &fb : m_funcBreakpoints)
+    {
+        if (ids.find(fb.first) == ids.end())
+            remainingFuncBreakpoints.push_back(fb.second);
+    }
+    if (remainingFuncBreakpoints.size() != m_funcBreakpoints.size())
+    {
+        std::vector<Breakpoint> tmpBreakpoints;
+        m_debugger->SetFunctionBreakpoints(remainingFuncBreakpoints, tmpBreakpoints);
+    }
 }
 
 void MIProtocol::EmitStoppedEvent(StoppedEvent event)