[Lldb-commits] [lldb] [lldb-dap] assembly breakpoints (PR #139969)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Tue May 20 08:10:46 PDT 2025
================
@@ -1620,6 +1620,88 @@ void DAP::EventThread() {
}
}
+std::vector<protocol::Breakpoint> DAP::SetSourceBreakpoints(
+ const protocol::Source &source,
+ const std::optional<std::vector<protocol::SourceBreakpoint>> &breakpoints) {
+ std::vector<protocol::Breakpoint> response_breakpoints;
+ if (source.sourceReference) {
+ // breakpoint set by assembly source.
+ auto &existing_breakpoints =
+ m_source_assembly_breakpoints[*source.sourceReference];
+ response_breakpoints =
+ SetSourceBreakpoints(source, breakpoints, existing_breakpoints);
+ } else {
+ // breakpoint set by a regular source file.
+ const auto path = source.path.value_or("");
+ auto &existing_breakpoints = m_source_breakpoints[path];
+ response_breakpoints =
+ SetSourceBreakpoints(source, breakpoints, existing_breakpoints);
+ }
+
+ return response_breakpoints;
+}
+
+std::vector<protocol::Breakpoint> DAP::SetSourceBreakpoints(
+ const protocol::Source &source,
+ const std::optional<std::vector<protocol::SourceBreakpoint>> &breakpoints,
+ SourceBreakpointMap &existing_breakpoints) {
+ std::vector<protocol::Breakpoint> response_breakpoints;
+
+ SourceBreakpointMap request_breakpoints;
+ if (breakpoints) {
+ for (const auto &bp : *breakpoints) {
+ SourceBreakpoint src_bp(*this, bp);
+ std::pair<uint32_t, uint32_t> bp_pos(src_bp.GetLine(),
+ src_bp.GetColumn());
+ request_breakpoints.try_emplace(bp_pos, src_bp);
+
+ const auto [iv, inserted] =
+ existing_breakpoints.try_emplace(bp_pos, src_bp);
+ // We check if this breakpoint already exists to update it.
+ if (inserted) {
+ if (auto error = iv->second.SetBreakpoint(source)) {
+ protocol::Breakpoint invalid_breakpoint;
+ invalid_breakpoint.message = llvm::toString(std::move(error));
+ invalid_breakpoint.verified = false;
+ response_breakpoints.push_back(std::move(invalid_breakpoint));
+ existing_breakpoints.erase(iv);
+ continue;
+ }
+ } else
+ iv->second.UpdateBreakpoint(src_bp);
----------------
JDevlieghere wrote:
```suggestion
} else {
iv->second.UpdateBreakpoint(src_bp);
}
```
https://github.com/llvm/llvm-project/pull/139969
More information about the lldb-commits
mailing list