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); }
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; }
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); } }
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); }