Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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));
     }
 }