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 int SetException(EXCEPTION_INFO[] pException) { if (pException[0].dwState.HasFlag(enum_EXCEPTION_STATE.EXCEPTION_STOP_FIRST_CHANCE)) { var catchpoint = Session.Breakpoints.AddCatchpoint(pException[0].bstrExceptionName); breakpointManager.Add(catchpoint); return(VSConstants.S_OK); } else { return(RemoveSetException(pException)); } }