Exemplo n.º 1
0
        internal void Step(AD7Thread thread, enum_STEPKIND sk, enum_STEPUNIT stepUnit)
        {
            DebugHelper.TraceEnteringMethod();
            if (!_isStepping)
            {
                if (currentStepRequest == null)
                {
                    currentStepRequest = _vm.CreateStepRequest(thread.ThreadMirror);
                }
                else
                {
                    currentStepRequest.Disable();
                }

                _isStepping = true;
                if (stepUnit == enum_STEPUNIT.STEP_LINE || stepUnit == enum_STEPUNIT.STEP_STATEMENT)
                {
                    switch (sk)
                    {
                    case enum_STEPKIND.STEP_INTO:
                        currentStepRequest.Depth = StepDepth.Into;
                        break;

                    case enum_STEPKIND.STEP_OUT:
                        currentStepRequest.Depth = StepDepth.Out;
                        break;

                    case enum_STEPKIND.STEP_OVER:
                        currentStepRequest.Depth = StepDepth.Over;
                        break;

                    default:
                        return;
                    }
                }
                else if (stepUnit == enum_STEPUNIT.STEP_INSTRUCTION)
                {
                    //TODO: by techcap
                }
                else
                {
                    throw new NotImplementedException();
                }

                currentStepRequest.Size = StepSize.Line;
                currentStepRequest.Enable();
            }

            ResumeVM();
        }
Exemplo n.º 2
0
		internal void CancelStepper(StepEventRequest stepReq) {
			debuggerThread.VerifyAccess();
			if (stepReq != null) {
				try {
					using (TempBreak())
						stepReq.Disable();
				}
				catch {
				}
				if (toStepper.TryGetValue(stepReq, out var info)) {
					toStepper.Remove(stepReq);
					info.OnStep(new StepCompleteEventArgs(stepReq, false, true));
				}
			}
		}
Exemplo n.º 3
0
        bool OnStep(StepEventRequest stepReq)
        {
            debuggerThread.VerifyAccess();
            if (stepReq == null)
            {
                return(false);
            }
            bool b = toStepper.TryGetValue(stepReq, out var info);

            Debug.Assert(b);
            if (!b)
            {
                return(false);
            }
            toStepper.Remove(stepReq);
            stepReq.Disable();
            return(info.OnStep(new StepCompleteEventArgs(stepReq, false)));
        }
Exemplo n.º 4
0
        internal void Step(MonoThread thread, enum_STEPKIND sk)
        {
            if (isStepping)
            {
                return;
            }

            if (currentStepRequest == null)
            {
                currentStepRequest = _vm.CreateStepRequest(thread.ThreadMirror);
            }
            else
            {
                currentStepRequest.Disable();
            }

            isStepping = true;
            switch (sk)
            {
            case enum_STEPKIND.STEP_INTO:
                currentStepRequest.Depth = StepDepth.Into;
                break;

            case enum_STEPKIND.STEP_OUT:
                currentStepRequest.Depth = StepDepth.Out;
                break;

            case enum_STEPKIND.STEP_OVER:
                currentStepRequest.Depth = StepDepth.Over;
                break;

            default:
                return;
            }

            currentStepRequest.Size = StepSize.Line;
            currentStepRequest.Enable();
            _vm.Resume();
        }