public DbgStackFrameImpl(DbgThreadImpl thread, DbgEngineStackFrame engineStackFrame)
 {
     this.thread           = thread ?? throw new ArgumentNullException(nameof(thread));
     this.engineStackFrame = engineStackFrame ?? throw new ArgumentNullException(nameof(engineStackFrame));
     thread.AddAutoClose(this);
     engineStackFrame.OnFrameCreated(this);
 }
Beispiel #2
0
 public DbgStepperImpl(DbgManagerImpl dbgManager, DbgThreadImpl thread, DbgEngineStepper engineStepper)
 {
     lockObj                     = new object();
     this.dbgManager             = dbgManager ?? throw new ArgumentNullException(nameof(dbgManager));
     this.thread                 = thread ?? throw new ArgumentNullException(nameof(thread));
     this.engineStepper          = engineStepper ?? throw new ArgumentNullException(nameof(engineStepper));
     engineStepper.StepComplete += DbgEngineStepper_StepComplete;
 }
Beispiel #3
0
        void DbgEngineStepper_StepComplete_DbgThread(DbgEngineStepCompleteEventArgs e)
        {
            Dispatcher.VerifyAccess();
            bool wasStepping;

            lock (lockObj) {
                wasStepping = !(stepperTag is null) && stepperTag == e.Tag;
                stepperTag  = null;
                thread      = (DbgThreadImpl?)e.Thread ?? thread;
            }
            if (IsClosed)
            {
                return;
            }
            var stepThread = (DbgThreadImpl?)e.Thread ?? thread;

            dbgManager.StepComplete_DbgThread(stepThread, e.Error, e.ForciblyCanceled);
            if (wasStepping)
            {
                RaiseStepComplete_DbgThread(stepThread, e.Error);
            }
        }
Beispiel #4
0
 public DbgStackWalkerImpl(DbgThreadImpl thread, DbgEngineStackWalker engineStackWalker)
 {
     this.thread            = thread ?? throw new ArgumentNullException(nameof(thread));
     this.engineStackWalker = engineStackWalker ?? throw new ArgumentNullException(nameof(engineStackWalker));
     thread.AddAutoClose(this);
 }