MCPcopy Create free account
hub / github.com/Kitware/CMake / HandleSetBreakpointsRequest

Method HandleSetBreakpointsRequest

Source/cmDebuggerBreakpointManager.cxx:68–123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68dap::SetBreakpointsResponse
69cmDebuggerBreakpointManager::HandleSetBreakpointsRequest(
70 dap::SetBreakpointsRequest const& request)
71{
72 std::unique_lock<std::mutex> lock(Mutex);
73
74 dap::SetBreakpointsResponse response;
75
76 auto sourcePath =
77 cmSystemTools::GetActualCaseForPath(request.source.path.value());
78 dap::array<dap::SourceBreakpoint> const defaultValue{};
79 auto const& breakpoints = request.breakpoints.value(defaultValue);
80
81 if (Breakpoints.find(sourcePath) != Breakpoints.end()) {
82 Breakpoints[sourcePath].clear();
83 }
84 response.breakpoints.resize(breakpoints.size());
85
86 if (ListFileFunctionLines.find(sourcePath) != ListFileFunctionLines.end()) {
87 // The file has loaded, we can validate breakpoints.
88 for (size_t i = 0; i < breakpoints.size(); i++) {
89 int64_t correctedLine =
90 CalibrateBreakpointLine(sourcePath, breakpoints[i].line);
91 if (correctedLine > 0) {
92 Breakpoints[sourcePath].emplace_back(NextBreakpointId++,
93 correctedLine);
94 response.breakpoints[i].id = Breakpoints[sourcePath].back().GetId();
95 response.breakpoints[i].line =
96 Breakpoints[sourcePath].back().GetLine();
97 response.breakpoints[i].verified = true;
98 } else {
99 response.breakpoints[i].verified = false;
100 response.breakpoints[i].line = breakpoints[i].line;
101 }
102 dap::Source dapSrc;
103 dapSrc.path = sourcePath;
104 response.breakpoints[i].source = dapSrc;
105 }
106 } else {
107 // The file has not loaded, validate breakpoints later.
108 ListFilePendingValidations.emplace(sourcePath);
109
110 for (size_t i = 0; i < breakpoints.size(); i++) {
111 Breakpoints[sourcePath].emplace_back(NextBreakpointId++,
112 breakpoints[i].line);
113 response.breakpoints[i].id = Breakpoints[sourcePath].back().GetId();
114 response.breakpoints[i].line = Breakpoints[sourcePath].back().GetLine();
115 response.breakpoints[i].verified = false;
116 dap::Source dapSrc;
117 dapSrc.path = sourcePath;
118 response.breakpoints[i].source = dapSrc;
119 }
120 }
121
122 return response;
123}
124
125void cmDebuggerBreakpointManager::SourceFileLoaded(

Callers

nothing calls this directly

Calls 11

valueMethod · 0.80
emplace_backMethod · 0.80
emplaceMethod · 0.80
findMethod · 0.45
endMethod · 0.45
clearMethod · 0.45
resizeMethod · 0.45
sizeMethod · 0.45
GetIdMethod · 0.45
backMethod · 0.45
GetLineMethod · 0.45

Tested by

no test coverage detected