Ejemplo n.º 1
0
        void GotStepRanges(CorFrame frame, uint offset, object tag, bool isStepInto, GetCodeRangeResult result, uint continueCounter)
        {
            engine.VerifyCorDebugThread();
            if (IsClosed)
            {
                return;
            }
            if (stepData != null)
            {
                return;
            }
            if (continueCounter != dnThread.Debugger.ContinueCounter || frame.IsNeutered)
            {
                RaiseStepComplete(thread, tag, "Internal error");
                return;
            }
            // If we failed to find the statement ranges (result.Success == false), step anyway.
            // We'll just step until the next sequence point instead of not doing anything.
            var        ranges        = result.Success ? ToStepRanges(result.StatementRanges) : new StepRange[] { new StepRange(offset, offset + 1) };
            CorStepper newCorStepper = null;
            var        dbg           = dnThread.Debugger;

            if (isStepInto)
            {
                newCorStepper = dbg.StepInto(frame, ranges, (_, e) => StepCompleted(e, newCorStepper, tag));
            }
            else
            {
                newCorStepper = dbg.StepOver(frame, ranges, (_, e) => StepCompleted(e, newCorStepper, tag));
            }
            SaveStepper(newCorStepper, tag);
        }
Ejemplo n.º 2
0
        void GotStepRanges(MDS.StackFrame frame, object tag, bool isStepInto, GetCodeRangeResult result, uint continueCounter)
        {
            engine.VerifyMonoDebugThread();
            if (IsClosed)
            {
                return;
            }
            if (stepData != null)
            {
                return;
            }
            if (continueCounter != engine.ContinueCounter)
            {
                RaiseStepComplete(thread, tag, "Internal error");
                return;
            }
            // If we failed to find the statement ranges (result.Success == false), step anyway.
            // We'll just step until the next sequence point instead of not doing anything.
            var stepIntoOverData = new StepIntoOverData(isStepInto, frame.Method, result.StatementRanges);

            StartStepIntoOver(tag, stepIntoOverData);
        }
Ejemplo n.º 3
0
        void GotStepRanges(CorFrame frame, object tag, bool isStepInto, GetCodeRangeResult result, uint continueCounter)
        {
            engine.VerifyCorDebugThread();
            if (IsClosed)
            {
                return;
            }
            if (stepData != null)
            {
                return;
            }
            if (continueCounter != dnThread.Debugger.ContinueCounter || frame.IsNeutered)
            {
                RaiseStepComplete(thread, tag, "Internal error");
                return;
            }
            if (!result.Success)
            {
                RaiseStepComplete(thread, tag, "Couldn't find statement code range");
                return;
            }

            var        ranges        = ToStepRanges(result.StatementRanges);
            CorStepper newCorStepper = null;
            var        dbg           = dnThread.Debugger;

            if (isStepInto)
            {
                newCorStepper = dbg.StepInto(frame, ranges, (_, e) => StepCompleted(e, newCorStepper, tag, null));
            }
            else
            {
                newCorStepper = dbg.StepOver(frame, ranges, (_, e) => StepCompleted(e, newCorStepper, tag, null));
            }
            SaveStepper(newCorStepper, tag);
        }