public void StepComplete(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugStepper pStepper, CorDebugStepReason reason) { EnterCallback(PausedReason.StepComplete, "StepComplete (" + reason.ToString() + ")", pThread); Thread thread = process.GetThread(pThread); Stepper stepper = thread.GetStepper(pStepper); process.TraceMessage(" - stepper info: " + stepper.ToString()); thread.Steppers.Remove(stepper); stepper.OnStepComplete(); if (stepper.PauseWhenComplete) { if (process.SelectedThread.LastFunction.HasSymbols) { ExitCallback_Paused(); } else { // This can only happen when JMC is disabled (ie NET1.1 or StepOut) if (stepper.Operation == Stepper.StepperOperation.StepOut) { // Create new stepper and keep going process.TraceMessage(" - stepping out of code without symbols at " + process.SelectedThread.LastFunction.ToString()); new Stepper(process.SelectedThread.LastFunction, "Stepper out of code without symbols").StepOut(); ExitCallback_Continue(); } else { // NET1.1: There is extra step over stepper, just keep going process.TraceMessage(" - leaving code without symbols"); ExitCallback_Continue(); } } } else { ExitCallback_Continue(); } }