Mono.Debugger.Backend.SingleSteppingEngine.OperationStart.DoProcessEvent C# (CSharp) Method

DoProcessEvent() protected method

protected DoProcessEvent ( Inferior cevent, TargetEventArgs &args ) : EventResult
cevent Inferior
args TargetEventArgs
return EventResult
            protected override EventResult DoProcessEvent(Inferior.ChildEvent cevent,
							       out TargetEventArgs args)
            {
                Report.Debug (DebugFlags.SSE,
                      "{0} start: {1} {2} {3} {4}", sse,
                      cevent, sse.Process.IsAttached,
                      inferior.CurrentFrame, inferior.EntryPoint);

                args = null;
                if ((cevent.Type != Inferior.ChildEventType.CHILD_STOPPED) &&
                (cevent.Type != Inferior.ChildEventType.CHILD_CALLBACK))
                return EventResult.Completed;

                if (sse.Architecture.IsSyscallInstruction (inferior, inferior.CurrentFrame)) {
                Report.Debug (DebugFlags.SSE,
                          "{0} start stopped on syscall instruction {1}",
                          sse, inferior.CurrentFrame);
                inferior.Step ();
                return EventResult.Running;
                }

                sse.Process.OperatingSystem.UpdateSharedLibraries (inferior);
                sse.Process.InitializeThreads (inferior, !sse.Process.IsAttached);

                if (sse.Process.IsAttached)
                return EventResult.Completed;

                if (!sse.Process.IsManaged) {
                if (sse.InitializeBreakpoints ())
                    return EventResult.Running;
                }

                Report.Debug (DebugFlags.SSE, "{0} start #1: {1} {2}", sse, cevent, Result);
                sse.PushOperation (new OperationStep (sse, StepMode.Run, Result));
                return EventResult.Running;
            }