} // end _ShouldOutput() public int Breakpoint(WDebugBreakpoint Bp) { try { var bi = new DbgBreakpointInfo(m_debugger, Bp); if (bi.IsOneShot) { // If we /hit/ a breakpoint, and it was "one-shot", then it's // going to get deleted out from under us. Prevent AVs later by // marking it invalid now. bi.MarkInvalid(); } var eventArgs = new BreakpointEventArgs(m_debugger, bi); int retVal = _RaiseEvent(m_debugger.BreakpointHit, eventArgs); if (_ShouldOutput(retVal, eventArgs)) { // Special case for "gu"/"step out" breakpoints: we're going to // pretend they don't exist. if (DbgBreakpointInfo.StepOutBreakpointId != bi.Id) { _PsPipe.WriteObject(eventArgs); } } return(retVal); } catch (Exception e) { Util.FailFast("Unexpected exception during event callback.", e); return(0); } } // end Breakpoint()
internal DbgBreakpointInfo(DbgEngDebugger debugger, DEBUG_BREAKPOINT_PARAMETERS nativeParams, WDebugBreakpoint db) : base(debugger) { m_nativeParams = nativeParams; m_debugControl = Debugger.ExecuteOnDbgEngThread(() => { return((WDebugControl)debugger.DebuggerInterface); }); __db = db; } // end constructor
} // end constructor internal DbgBreakpointInfo(DbgEngDebugger debugger, WDebugBreakpoint db) : base(debugger) { if (null == db) { throw new ArgumentNullException("db"); } Debugger.ExecuteOnDbgEngThread(() => { m_debugControl = (WDebugControl)debugger.DebuggerInterface; __db = db; Refresh(); }); } // end constructor