private void Step(int stepIn) { // get sequence points var startOffset = _thread.CurrentFrame.GetOffset(); var sequencePoint = _thread.CurrentFrame.Function.Symbols.GetSequencePoint(startOffset); var sequencePoints = _thread.CurrentFrame.Function.Symbols.GetIgnoredSequencePoints().ToList(); sequencePoints.Insert(0, sequencePoint); int size = Marshal.SizeOf(sequencePoint.ByteRange); // write ranges to pointer. IntPtr rangesPtr = Marshal.AllocHGlobal(size * sequencePoints.Count); for (int i = 0; i < sequencePoints.Count; i++) { Marshal.StructureToPtr(sequencePoints[i].ByteRange, rangesPtr + (i * size), true); } // step _comStepper.StepRange(stepIn, rangesPtr, (uint)sequencePoints.Count); // free ranges Marshal.FreeHGlobal(rangesPtr); _thread.Process.Continue(); }
/** Step until code outside of the range is reached. */ public void StepRange(bool into, COR_DEBUG_STEP_RANGE[] ranges, int cnt) { m_step.StepRange(into ? 1 : 0, ranges, (uint)cnt); }
public void StepIn(int[] ranges) { operation = StepperOperation.StepIn; corStepper.StepRange(true /* step in */, ranges); }
public void StepRange(bool stepInto, COR_DEBUG_STEP_RANGE[] stepRanges) { m_step.StepRange(stepInto ? 1 : 0, stepRanges, (uint)stepRanges.Length); }