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;
}