Inheritance: CorThreadEventArgs
		void OnStepComplete (object sender, CorStepCompleteEventArgs e)
		{
			lock (debugLock) {
				if (evaluating) {
					e.Continue = true;
					return;
				}
			}
			OnStopped ();
			e.Continue = false;
			SetActiveThread (e.Thread);
			TargetEventArgs args = new TargetEventArgs (TargetEventType.TargetStopped);
			args.Process = GetProcess (process);
			args.Thread = GetThread (e.Thread);
			args.Backtrace = new Backtrace (new CorBacktrace (e.Thread, this));
			OnTargetEvent (args);
		}
Beispiel #2
0
 void _process_OnStepComplete(object sender, CorStepCompleteEventArgs e)
 {
     e.Continue = false;
     _activeThread = e.Thread;
     _breakEvent.Set();
 }
Beispiel #3
0
 /// <summary>
 /// Creates a new instance of the CustomStepCompleteEventArgs class.
 /// </summary>
 /// <param name="processController">Which IMDbgProcessController to store in the Object.</param>
 /// <param name="callbackArgs">Which CorStepCompleteEventArgs to encapsulate in this wrapper.</param>
 public CustomStepCompleteEventArgs(IMDbgProcessController processController,
                                    CorStepCompleteEventArgs callbackArgs)
     : base(processController)
 {
     this.callbackArgs = callbackArgs;
 }
Beispiel #4
0
 private void OnStepComplete(object sender, CorStepCompleteEventArgs e)
 {
     try
     {
         Paused(e.Thread);
     }
     catch (NoDebugInfo i)
     {
         subscriber.Published("There is no debug info for this point. Stepping out of debug lock to continue...");
         stepper = Stepper(e.Thread);
         stepper.StepOut();
     }
 }
Beispiel #5
0
        private void StepCompleteEventHandler(Object sender, CorStepCompleteEventArgs e)
        {
            Trace.WriteLine("ManagedCallback::StepComplete");
            BeginManagedDebugEvent();
            try
            {
                if (InternalHandleRawMode(ManagedCallbackType.OnStepComplete, e))
                    return;

                // custom stepper handling
                if (customSteppers != null
                    && customSteppers.Contains(e.Stepper))
                {
                    using (MDbgProcessStopController psc = new MDbgProcessStopController(this, e, false))
                    {
                        CustomStepperEventHandler handler = (customSteppers[e.Stepper] as CustomStepperEventHandler);
                        customSteppers.Remove(e.Stepper);
                        handler(this, new CustomStepCompleteEventArgs(psc, e));
                    }

                    return;         // this was custom stepper, no additional action necessary.
                }

                // we need to deliver step complete for cordbg skin, so that we can print
                // enhanced diagnostics.
                if (HandleCustomPostCallback(ManagedCallbackType.OnStepComplete, e))
                    return;

                // we will stop only if this callback is from our own stepper.
                if (e.Stepper == m_activeStepper)
                {
                    m_activeStepper = null;
                    e.Continue = false;
                    InternalSignalRuntimeIsStopped(e.Thread, new StepCompleteStopReason(e.Stepper, e.StepReason));
                }
            }
            finally
            {
                EndManagedDebugEvent(e);
            }
        }