private void OnBreakpointHit(object sender, BreakpointHitEventArgs eventArgs) { _breakpointLineNumber = eventArgs.LineNumber; if (_pauseOnActiveBreakpoint && !_activeBreakpoints.ContainsKey(eventArgs.LineNumber)) { if (!DelayExecution) { _breakpointLineNumber = null; Logger.Debug("Breakpoint is no longer in active breakpoints, continuing execution."); } else { Logger.Debug($"Breakpoint not in active breakpoints, delaying execution for {ExecutionDelay.TotalMilliseconds} milliseconds."); RefreshCurrentVariables(); DelayingExecution = true; Thread.Sleep(ExecutionDelay); DelayingExecution = false; } } else { PauseOnBreakpoint = true; Logger.Info("Stopping at breakpoint."); RefreshCurrentVariables(); while (PauseOnBreakpoint) { Logger.Trace($"Sleeping on breakpoint for {_commandEvaluateTimeout.TotalMilliseconds} milliseconds."); Thread.Sleep(_commandEvaluateTimeout); } Logger.Info("Continuing from breakpoint."); } }
private void OnBreakpointHit(object sender, BreakpointHitEventArgs e) { var boundBreakpoints = new[] { _breakpointManager.GetBreakpoint(e.Breakpoint) }; // An engine that supports more advanced breakpoint features such as hit counts, conditions and filters // should notify each bound breakpoint that it has been hit and evaluate conditions here. Send(new AD7BreakpointEvent(new AD7BoundBreakpointsEnum(boundBreakpoints)), AD7BreakpointEvent.IID, _threads[e.Thread]); }
private void OnBreakpointHit(object sender, BreakpointHitEventArgs e) { var boundBreakpoint = _breakpointManager.GetBoundBreakpoint(e.BreakpointBinding); Send(new AD7BreakpointEvent(new AD7BoundBreakpointsEnum(new[] { boundBreakpoint })), AD7BreakpointEvent.IID, _threads[e.Thread]); }