public int Bind() { TEXT_POSITION[] startPosition; TEXT_POSITION[] endPosition; var engine = breakpointManager.Engine; var documentName = engine.GetLocationInfo(requestInfo.bpLocation.unionmember2, out startPosition, out endPosition); documentName = engine.TranslateToBuildServerPath(documentName); breakpoint = engine.Session.Breakpoints.Add(documentName, (int)startPosition[0].dwLine + 1, (int)startPosition[0].dwColumn + 1); breakpointManager.Add(breakpoint, this); SetCondition(requestInfo.bpCondition); SetPassCount(requestInfo.bpPassCount); // Enable(...) would have already been called before Bind if (!isEnabled) { breakpoint.Enabled = false; } lock (boundBreakpoints) { uint address = 0; var breakpointResolution = new MonoBreakpointResolution(engine, address, GetDocumentContext(address)); var boundBreakpoint = new MonoBoundBreakpoint(engine, address, this, breakpointResolution); boundBreakpoints.Add(boundBreakpoint); engine.Send(new MonoBreakpointBoundEvent(this, boundBreakpoint), MonoBreakpointBoundEvent.IID, null); } return(VSConstants.S_OK); }
public MonoBoundBreakpoint(MonoEngine engine, uint address, MonoPendingBreakpoint pendingBreakpoint, MonoBreakpointResolution breakpointResolution) { this.engine = engine; this.address = address; this.pendingBreakpoint = pendingBreakpoint; this.breakpointResolution = breakpointResolution; }
public int GetBreakpointResolution(out IDebugBreakpointResolution2 breakpointResolution) { breakpointResolution = this.breakpointResolution; return(VSConstants.S_OK); }