Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        public Results IsModuleLoad(string cmd)
        {
            Results results = null;

            if (cmd.StartsWith("library-loaded,", StringComparison.Ordinal))
            {
                results = MIResults.ParseResultList(cmd.Substring(15));
            }
            return(results);
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
 protected virtual void OnStateChanged(string mode, string strresult)
 {
     this.OnStateChanged(mode, _miResults.ParseResultList(strresult));
 }