Mono.Debugger.Debugger.StartOperation C# (CSharp) Method

StartOperation() private method

private StartOperation ( ThreadingModel model, SingleSteppingEngine caller ) : CommandResult
model ThreadingModel
caller Mono.Debugger.Backend.SingleSteppingEngine
return CommandResult
        internal CommandResult StartOperation(ThreadingModel model, SingleSteppingEngine caller)
        {
            if (!ThreadManager.InBackgroundThread)
                throw new InternalError ();

            if ((model & ThreadingModel.ThreadingMode) == ThreadingModel.Default) {
                if (Inferior.HasThreadEvents)
                    model |= ThreadingModel.Single;
                else
                    model |= ThreadingModel.Process;
            }

            if ((model & ThreadingModel.ThreadingMode) != ThreadingModel.Global)
                return caller.Process.StartOperation (model, caller);

            if (current_operation != null)
                throw new TargetException (TargetError.NotStopped);

            lock (this) {
                stopped_event.Reset ();
                current_operation = new GlobalCommandResult (this, model);
            }

            foreach (Process process in process_hash.Values) {
                process.StartGlobalOperation (model, caller, current_operation);
            }

            return current_operation;
        }

Usage Example

示例#1
0
        internal CommandResult StartApplication()
        {
            SingleSteppingEngine engine = new SingleSteppingEngine(manager, this, start);

            initialized = true;

            this.main_thread           = engine;
            engine.Thread.ThreadFlags |= Thread.Flags.StopOnExit;

            if (thread_hash.Contains(engine.PID))
            {
                thread_hash [engine.PID] = engine;
            }
            else
            {
                thread_hash.Add(engine.PID, engine);
            }
            session.MainThreadGroup.AddThread(engine.Thread.ID);

            session.OnMainProcessCreated(this);
            manager.Debugger.OnMainProcessCreatedEvent(this);

            CommandResult result = Debugger.StartOperation(start.Session.Config.ThreadingModel, engine);

            return(engine.StartApplication(result));
        }