예제 #1
0
        DebugPendingBreakpoint(JoinableTaskContext taskContext,
                               DebugBoundBreakpoint.Factory debugBoundBreakpointFactory,
                               BreakpointErrorEnumFactory breakpointErrorEnumFactory,
                               BoundBreakpointEnumFactory breakpointBoundEnumFactory,
                               IBreakpointManager breakpointManager, IDebugProgram2 program,
                               IDebugBreakpointRequest2 request, RemoteTarget target,
                               Marshal marshal)
        {
            taskContext.ThrowIfNotOnMainThread();

            _debugBoundBreakpointFactory = debugBoundBreakpointFactory;
            _breakpointErrorEnumFactory  = breakpointErrorEnumFactory;
            _breakpointBoundEnumFactory  = breakpointBoundEnumFactory;
            _breakpointManager           = breakpointManager;
            _program = program;
            _request = request;
            _target  = target;
            _marshal = marshal;

            _boundBreakpoints = new Dictionary <int, IBoundBreakpoint>();

            BP_REQUEST_INFO[] breakpointRequestInfo = new BP_REQUEST_INFO[1];
            request.GetRequestInfo(enum_BPREQI_FIELDS.BPREQI_BPLOCATION |
                                   enum_BPREQI_FIELDS.BPREQI_CONDITION |
                                   enum_BPREQI_FIELDS.BPREQI_PASSCOUNT |
                                   enum_BPREQI_FIELDS.BPREQI_LANGUAGE,
                                   breakpointRequestInfo);
            _requestInfo = breakpointRequestInfo[0];

            _enabled             = false;
            _deleted             = false;
            _breakpointCondition = new BreakpointCondition(_requestInfo);
        }
예제 #2
0
        DebugWatchpoint(JoinableTaskContext taskContext,
                        DebugWatchpointResolution.Factory resolutionFactory,
                        BreakpointErrorEnumFactory breakpointErrorEnumFactory,
                        BoundBreakpointEnumFactory boundBreakpointEnumFactory,
                        IBreakpointManager breakpointManager, IDebugBreakpointRequest2 request,
                        RemoteTarget target, IDebugProgram2 program, Marshal marshal)
        {
            taskContext.ThrowIfNotOnMainThread();

            _request                    = request;
            _target                     = target;
            _breakpointManager          = breakpointManager;
            _resolutionFactory          = resolutionFactory;
            _breakpointErrorEnumFactory = breakpointErrorEnumFactory;
            _boundBreakpointEnumFactory = boundBreakpointEnumFactory;
            _disabledByPassCount        = false;

            BP_REQUEST_INFO[] breakpointRequestInfo = new BP_REQUEST_INFO[1];
            request.GetRequestInfo(enum_BPREQI_FIELDS.BPREQI_BPLOCATION |
                                   enum_BPREQI_FIELDS.BPREQI_CONDITION |
                                   enum_BPREQI_FIELDS.BPREQI_PASSCOUNT,
                                   breakpointRequestInfo);
            _requestInfo = breakpointRequestInfo[0];

            _enabled = true;
            _deleted = false;
            _program = program;
            _marshal = marshal;
        }
예제 #3
0
 public BreakpointBoundEvent(IDebugPendingBreakpoint2 pendingBreakpoint)
     : base((uint)enum_EVENTATTRIBUTES.EVENT_SYNCHRONOUS,
            new Guid("1dddb704-cf99-4b8a-b746-dabb01dd13a0"))
 {
     _pendingBreakpoint          = pendingBreakpoint;
     _newlyBoundBreakpoints      = null;
     _breakpointBoundEnumFactory = null;
 }
예제 #4
0
 /// <summary>
 /// Send a breakpoint bound event to the SDM.
 /// </summary>
 public static void OnBreakpointBound(
     this IDebugEngineHandler handler, IPendingBreakpoint pendingBreakpoint,
     IEnumerable <IDebugBoundBreakpoint2> newlyBoundBreakpoints,
     BoundBreakpointEnumFactory breakpointBoundEnumFactory,
     IGgpDebugProgram program) =>
 handler.SendEvent(
     new BreakpointBoundEvent(pendingBreakpoint, newlyBoundBreakpoints,
                              breakpointBoundEnumFactory), program);
예제 #5
0
 public Factory(JoinableTaskContext taskContext,
                DebugWatchpointResolution.Factory resolutionFactory,
                BreakpointErrorEnumFactory breakpointErrorEnumFactory,
                BoundBreakpointEnumFactory boundBreakpointEnumFactory)
 {
     _taskContext                = taskContext;
     _resolutionFactory          = resolutionFactory;
     _breakpointErrorEnumFactory = breakpointErrorEnumFactory;
     _boundBreakpointEnumFactory = boundBreakpointEnumFactory;
 }
예제 #6
0
 public Factory(JoinableTaskContext taskContext,
                DebugBoundBreakpoint.Factory debugBoundBreakpointFactory,
                BreakpointErrorEnumFactory breakpointErrorEnumFactory,
                BoundBreakpointEnumFactory breakpointBoundEnumFactory)
 {
     _taskContext = taskContext;
     _debugBoundBreakpointFactory = debugBoundBreakpointFactory;
     _breakpointErrorEnumFactory  = breakpointErrorEnumFactory;
     _breakpointBoundEnumFactory  = breakpointBoundEnumFactory;
 }
예제 #7
0
 public void EmitBreakpointBoundEvent(
     IPendingBreakpoint breakpoint,
     IEnumerable <IDebugBoundBreakpoint2> newlyBoundBreakpoints,
     BoundBreakpointEnumFactory breakpointBoundEnumFactory)
 {
     if (breakpoint.GetId() != -1)
     {
         debugEngineHandler.OnBreakpointBound(
             breakpoint, newlyBoundBreakpoints,
             breakpointBoundEnumFactory, debugProgram);
     }
 }
예제 #8
0
 LldbEventManager(IDebugEngineHandler debugEngineHandler,
                  IBreakpointManager breakpointManager,
                  BoundBreakpointEnumFactory boundBreakpointEnumFactory,
                  IGgpDebugProgram program, SbProcess process,
                  LldbListenerSubscriber listenerSubscriber, JoinableTaskContext taskContext)
 {
     _debugEngineHandler         = debugEngineHandler;
     _lldbBreakpointManager      = breakpointManager;
     _boundBreakpointEnumFactory = boundBreakpointEnumFactory;
     _program                = program;
     _lldbProcess            = process;
     _lldbListenerSubscriber = listenerSubscriber;
     _taskContext            = taskContext;
 }
예제 #9
0
 public Factory(BoundBreakpointEnumFactory boundBreakpointEnumFactory,
                JoinableTaskContext taskContext)
 {
     _boundBreakpointEnumFactory = boundBreakpointEnumFactory;
     _taskContext = taskContext;
 }