internal void Send(IDebugEvent2 eventObject, string iidEvent, IDebugProgram2 program, IDebugThread2 thread) {
            LiveLogger.WriteLine("AD7Engine Event: {0} ({1})", eventObject.GetType(), iidEvent);

            // Check that events was not disposed
            var events = _events;
            if (events == null) {
                return;
            }

            uint attributes;
            var riidEvent = new Guid(iidEvent);

            EngineUtils.RequireOk(eventObject.GetAttributes(out attributes));

            if ((attributes & (uint)enum_EVENTATTRIBUTES.EVENT_STOPPING) != 0 && thread == null) {
                Debug.Fail("A thread must be provided for a stopping event");
                return;
            }

            try {
                EngineUtils.RequireOk(events.Event(this, null, program, thread, eventObject, ref riidEvent, attributes));
            } catch (InvalidCastException) {
                // COM object has gone away
            }
        }
Beispiel #2
0
        public int Event(IDebugEngine2 pEngine, IDebugProcess2 pProcess, IDebugProgram2 pProgram,
                         IDebugThread2 pThread, IDebugEvent2 pEvent, ref Guid riidEvent, uint dwAttrib)
        {
            _taskContext.ThrowIfNotOnMainThread();

            _logger.Trace($"Note right of VS: <IN> IDebugEventCallback2 {pEvent.GetType()}");

            var result = _callback.Event(pEngine, pProcess, pProgram, pThread, pEvent,
                                         ref riidEvent, dwAttrib);

            _logger.Trace($"Note right of VS: <OUT> IDebugEventCallback2 {pEvent.GetType()}");

            return(result);
        }
Beispiel #3
0
 public int Event(IDebugEngine2 pEngine, IDebugProcess2 pProcess, IDebugProgram2 pProgram,
                  IDebugThread2 pThread, IDebugEvent2 pEvent, ref Guid riidEvent, uint dwAttrib)
 {
     Trace.WriteLine($"VSFake: Received IDebugEvent2 {{type:\"{pEvent.GetType()}\", " +
                     $"interfaces:{GetInteropInterfacesTrace(pEvent)}}}");
     return(jobOrchestrator.HandleCallbackEvent(pEngine, pProcess, pProgram, pThread,
                                                pEvent));
 }
Beispiel #4
0
        public void Send(IDebugEvent2 eventObject, string iidEvent, IDebugProgram2 program, IDebugThread2 thread)
        {
            uint attributes;
            Guid riidEvent = new Guid(iidEvent);

            if (!(eventObject is AD7OutputDebugStringEvent))
            {
                _engine.Logger.WriteLine("Send Event {0}", eventObject.GetType().Name);
            }
            EngineUtils.RequireOk(eventObject.GetAttributes(out attributes));
            EngineUtils.RequireOk(_eventCallback.Event(_engine, null, program, thread, eventObject, ref riidEvent, attributes));
        }
Beispiel #5
0
        internal void Send(IDebugEvent2 eventObject, string iidEvent, IDebugProgram2 program, IDebugThread2 thread)
        {
            uint attributes;
            Guid riidEvent = new Guid(iidEvent);

            EngineUtils.RequireOk(eventObject.GetAttributes(out attributes));

            Debug.WriteLine(String.Format("Sending Event: {0} {1}", eventObject.GetType(), iidEvent));
            try {
                EngineUtils.RequireOk(_events.Event(this, null, program, thread, eventObject, ref riidEvent, attributes));
            } catch (InvalidCastException) {
                // COM object has gone away
            }
        }
        public int Event(IDebugEngine2 engine, IDebugProcess2 process, IDebugProgram2 program,
                         IDebugThread2 thread, IDebugEvent2 debugEvent, ref Guid riidEvent, uint attributes)
        {
            System.Diagnostics.Debug.WriteLine(debugEvent.GetType());

            if (debugEvent is IDebugBreakEvent2)
            {
                OnEnterBreakMode(this, thread);
            }
            else if (debugEvent is IDebugBreakpointEvent2)
            {
                OnEnterBreakMode(this, thread);
            }
            else if (debugEvent is IDebugExceptionEvent2)
            {
                OnEnterBreakMode(this, thread);
            }

            return(VSConstants.S_OK);
        }
Beispiel #7
0
        internal void Send(IDebugEvent2 eventObject, string iidEvent, IDebugProgram2 program, IDebugThread2 thread)
        {
            uint attributes;
            Guid riidEvent = new Guid(iidEvent);

            EngineUtils.RequireOk(eventObject.GetAttributes(out attributes));

            var events = _events;
            if (events == null) {
                // Probably racing with the end of the process.
                Debug.Fail("_events is null");
                return;
            }

            Debug.WriteLine(String.Format("Sending Event: {0} {1}", eventObject.GetType(), iidEvent));
            try {
                EngineUtils.RequireOk(events.Event(this, null, program, thread, eventObject, ref riidEvent, attributes));
            } catch (InvalidCastException) {
                // COM object has gone away
            }
        }
Beispiel #8
0
 public override string GetLogDetails()
 {
     return($"{{eventType:\"{_event.GetType()}\"}}");
 }
Beispiel #9
0
        internal void Send(IDebugEvent2 eventObject, string iidEvent, IDebugProgram2 program)
        {
            uint attributes;
            Guid riidEvent = new Guid(iidEvent);

            EngineUtils.RequireOk(eventObject.GetAttributes(out attributes));

            Debug.WriteLine(string.Format("Sending Event: {0} {1}", eventObject.GetType(), iidEvent));
            try
            {
                EngineUtils.RequireOk(events.Event(this, debugProcess, this, debugThread, eventObject, ref riidEvent, attributes));
            }
            catch (InvalidCastException)
            {
                // COM object has gone away
            }
        }
 public void Send(IDebugEvent2 eventObject, IDebugProgram2 program, IDebugThread2 thread)
 {
     uint attributes;
     var riidEvent = eventObject.GetType().GUID;
     EngineUtils.RequireOk(eventObject.GetAttributes(out attributes));
     EngineUtils.RequireOk(m_ad7Callback.Event(m_engine, null, program, thread, eventObject, ref riidEvent, attributes));
 }
Beispiel #11
0
 public virtual string GetLogDetails()
 {
     return($"{{eventType:\"{evnt.GetType()}\"}}");
 }