string EvaluateTrace(int frameId, string exp) { var sb = new StringBuilder(); int last = 0; int i = exp.IndexOf('{'); while (i != -1) { if (i < exp.Length - 1 && exp[i + 1] == '{') { sb.Append(exp, last, i - last + 1); last = i + 2; i = exp.IndexOf('{', i + 2); continue; } int j = exp.IndexOf('}', i + 1); if (j == -1) { break; } string se = exp.Substring(i + 1, j - i - 1); se = protocolClient.SendRequestSync(new EvaluateRequest(se, frameId)).Result; sb.Append(exp, last, i - last); sb.Append(se); last = j + 1; i = exp.IndexOf('{', last); } sb.Append(exp, last, exp.Length - last); return(sb.ToString()); }
void StartDebugAgent() { var startInfo = new ProcessStartInfo(GetDebugAdapterPath(), GetDebugAdapterArguments()); startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardInput = true; startInfo.StandardOutputEncoding = Encoding.UTF8; startInfo.StandardOutputEncoding = Encoding.UTF8; startInfo.UseShellExecute = false; if (!MonoDevelop.Core.Platform.IsWindows) { startInfo.EnvironmentVariables ["PATH"] = Environment.GetEnvironmentVariable("PATH") + ":/usr/local/share/dotnet/"; } debugAgentProcess = Process.Start(startInfo); debugAgentProcess.EnableRaisingEvents = true; debugAgentProcess.Exited += DebugAgentProcess_Exited; protocolClient = new DebugProtocolHost(debugAgentProcess.StandardInput.BaseStream, debugAgentProcess.StandardOutput.BaseStream); protocolClient.RequestReceived += OnDebugAdaptorRequestReceived; protocolClient.Run(); protocolClient.TraceCallback = (obj) => { Debug.WriteLine(obj); }; protocolClient.EventReceived += HandleEvent; InitializeRequest initRequest = CreateInitRequest(); Capabilities = protocolClient.SendRequestSync(initRequest); }
private static void StartDebugger(Action pAction) { if (mDebuggerProcess != null) { Detach(); } mBreakPoints.Clear(); ProcessStartInfo psi2 = new ProcessStartInfo(); psi2.FileName = Path.GetFullPath(@"..\..\..\..\netcoredbg-win64-master\netcoredbg\netcoredbg.exe"); psi2.Arguments = "--interpreter=vscode --engineLogging=log.log"; psi2.UseShellExecute = false; psi2.RedirectStandardInput = true; psi2.RedirectStandardOutput = true; mDebuggerProcess = Process.Start(psi2); mClient = new DebugProtocolHost(mDebuggerProcess.StandardInput.BaseStream, mDebuggerProcess.StandardOutput.BaseStream, true); mClient.EventReceived += Client_EventReceived; mClient.Run(); InitializeRequest ir = new InitializeRequest(); ir.ClientID = "ClientID"; ir.AdapterID = "Adapter"; ir.ColumnsStartAt1 = true; ir.PathFormat = InitializeArguments.PathFormatValue.Path; ir.SupportsVariablePaging = true; ir.SupportsVariableType = true; ir.SupportsRunInTerminalRequest = true; var repsonse = mClient.SendRequestSync(ir); pAction.Invoke(); ConfigurationDoneRequest cr = new ConfigurationDoneRequest(); mClient.SendRequestSync(cr); }
public static void Launch(string pFile, bool pStopAtEntry) { StartDebugger(() => { LaunchRequest lr = new LaunchRequest(); lr.NoDebug = false; lr.ConfigurationProperties.Add("program", pFile); lr.ConfigurationProperties.Add("stopAtEntry", pStopAtEntry); mClient.SendRequestSync(lr); }); }
public void Start(Stream inputStream, Stream outputStream) { this.outputStream = outputStream; /*debugAgentProcess = * debugAgentProcess.EnableRaisingEvents = true; * debugAgentProcess.Exited += DebugAgentProcess_Exited;*/ protocolClient = new DebugProtocolHost(inputStream, outputStream); protocolClient.Run(); protocolClient.EventReceived += HandleEvent; OnTargetOutput(false, "Running"); InitializeRequest initRequest = CreateInitRequest(); Capabilities = protocolClient.SendRequestSync(initRequest); OnTargetOutput(false, "Running"); }
protected override void OnStepInstruction() { protocolClient.SendRequestSync(new StepInRequest(currentThreadId)); }