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