private void OnDebuggeeOutput(string cmd) { if (cmd.StartsWith("=thread-created,", StringComparison.Ordinal)) { Results results = MIResults.ParseResultList(cmd.Substring(16)); ThreadCreatedEvent(this, new ResultEventArgs(results, 0)); } else if (cmd.StartsWith("=thread-exited,", StringComparison.Ordinal)) { Results results = MIResults.ParseResultList(cmd.Substring(15)); ThreadExitedEvent(this, new ResultEventArgs(results, 0)); } string decodedOutput = MIResults.ParseCString(cmd); if (_consoleCommandOutput == null) { if (MessageEvent != null) { MessageEvent(this, decodedOutput); } } else { _consoleCommandOutput.Append(decodedOutput); } }
private void OnNotificationOutput(string cmd) { Results results = null; if ((results = MICommandFactory.IsModuleLoad(cmd)) != null) { if (LibraryLoadEvent != null) { LibraryLoadEvent(this, new ResultEventArgs(results)); } } else if (cmd.StartsWith("breakpoint-modified,", StringComparison.Ordinal)) { results = MIResults.ParseResultList(cmd.Substring(20)); if (BreakChangeEvent != null) { BreakChangeEvent(this, new ResultEventArgs(results)); } } else if (cmd.StartsWith("thread-group-started,", StringComparison.Ordinal)) { results = MIResults.ParseResultList(cmd.Substring("thread-group-started,".Length)); HandleThreadGroupStarted(results); } else if (cmd.StartsWith("thread-created,", StringComparison.Ordinal)) { results = MIResults.ParseResultList(cmd.Substring("thread-created,".Length)); ThreadCreatedEvent(this, new ResultEventArgs(results, 0)); } else if (cmd.StartsWith("thread-exited,", StringComparison.Ordinal)) { results = MIResults.ParseResultList(cmd.Substring("thread-exited,".Length)); ThreadExitedEvent(this, new ResultEventArgs(results, 0)); } // NOTE: the message event is an MI Extension from clrdbg, though we could use in it the future for other debuggers else if (cmd.StartsWith("message,", StringComparison.Ordinal)) { results = MIResults.ParseResultList(cmd.Substring("message,".Length)); if (this.MessageEvent != null) { this.MessageEvent(this, new ResultEventArgs(results)); } } else if (cmd.StartsWith("telemetry,", StringComparison.Ordinal)) { results = MIResults.ParseResultList(cmd.Substring("telemetry,".Length)); if (this.TelemetryEvent != null) { this.TelemetryEvent(this, new ResultEventArgs(results)); } } else { OnDebuggeeOutput("=" + cmd); } }
public Results IsModuleLoad(string cmd) { Results results = null; if (cmd.StartsWith("library-loaded,", StringComparison.Ordinal)) { results = MIResults.ParseResultList(cmd.Substring(15)); } return(results); }
protected async virtual void OnStateChanged(string mode, string strresult) { // NOTE: This is an async void method, so any exception leaked from here may crash Visual Studio. Be very careful. Results results = MIResults.ParseResultList(strresult); if (mode == "stopped") { OnStopped(results); } else if (mode == "running") { this.ProcessState = ProcessState.Running; if (RunModeEvent != null) { RunModeEvent(this, new ResultEventArgs(results)); } } else if (mode == "exit") { OnDebuggerProcessExit(); } else if (mode.StartsWith("done,bkpt=")) { // TODO handle breakpoint binding } else if (mode == "done") { } else if (mode == "connected") { if (this.ProcessState == ProcessState.NotConnected) { this.ProcessState = ProcessState.Running; } if (RunModeEvent != null) { RunModeEvent(this, new ResultEventArgs(results)); } } else { Debug.Fail("Unknown mode: " + mode); } return; }
protected virtual void OnStateChanged(string mode, string strresult) { Results results = MIResults.ParseResultList(strresult); if (mode == "stopped") { OnStopped(results); } else if (mode == "running") { this.ProcessState = ProcessState.Running; if (RunModeEvent != null) { RunModeEvent(this, new ResultEventArgs(results)); } } else if (mode == "exit") { OnDebuggerProcessExit(null); } else if (mode.StartsWith("done,bkpt=", StringComparison.Ordinal)) { // TODO handle breakpoint binding } else if (mode == "done") { } else if (mode == "connected") { if (this.ProcessState == ProcessState.NotConnected) { this.ProcessState = ProcessState.Running; } if (RunModeEvent != null) { RunModeEvent(this, new ResultEventArgs(results)); } } else { Debug.Fail("Unknown mode: " + mode); } return; }
private void OnNotificationOutput(string cmd) { Results results = null; if ((results = MICommandFactory.IsModuleLoad(cmd)) != null) { if (LibraryLoadEvent != null) { LibraryLoadEvent(this, new ResultEventArgs(results)); } } else if (cmd.StartsWith("breakpoint-modified,", StringComparison.Ordinal)) { results = MIResults.ParseResultList(cmd.Substring(20)); if (BreakChangeEvent != null) { BreakChangeEvent(this, new ResultEventArgs(results)); } } else { OnDebuggeeOutput("=" + cmd); } }
protected virtual void OnStateChanged(string mode, string strresult) { this.OnStateChanged(mode, _miResults.ParseResultList(strresult)); }