public override void SetBreakpoints(Response response, dynamic arguments) { SessionLog.WriteLine($"Set breakpoints command accepted {arguments}"); if ((bool)arguments.sourceModified) { if (_startupPerformed) { SendErrorResponse(response, 1102, "Нельзя установить точку останова на модифицированный файл."); return; } SendResponse(response, new SetBreakpointsResponseBody()); return; } var path = (string)arguments.source.path; path = ConvertClientPathToDebugger(path); if (Environment.OSVersion.Platform == PlatformID.Win32NT) { // vscode иногда передает путь, где диск - маленькая буква path = NormalizeDriveLetter(path); } var breaks = new List <OneScript.DebugProtocol.Breakpoint>(); foreach (var srcBreakpoint in arguments.breakpoints) { var bpt = new OneScript.DebugProtocol.Breakpoint(); bpt.Line = (int)srcBreakpoint.line; bpt.Source = path; breaks.Add(bpt); } if (breaks.Count == 0) // в целях сохранения интерфейса WCF придется сделать костыль на перех. период { var bpt = new OneScript.DebugProtocol.Breakpoint(); bpt.Line = 0; bpt.Source = path; breaks.Add(bpt); } var confirmedBreaks = _process.SetBreakpoints(breaks); var confirmedBreaksVSCode = new List <VSCodeDebug.Breakpoint>(confirmedBreaks.Length); for (int i = 0; i < confirmedBreaks.Length; i++) { confirmedBreaksVSCode.Add(new VSCodeDebug.Breakpoint(true, confirmedBreaks[i].Line)); } SendResponse(response, new SetBreakpointsResponseBody(confirmedBreaksVSCode)); }