Esempio n. 1
0
        public void AddExceptionTrigger(DkmProcess process, Guid sourceId, DkmExceptionTrigger trigger)
        {
            var nameTrigger = trigger as DkmExceptionNameTrigger;

            if (nameTrigger != null && nameTrigger.ExceptionCategory == Guids.PythonExceptionCategoryGuid)
            {
                string name     = nameTrigger.Name;
                bool   wasEmpty = _monitoredExceptions.Count == 0;

                if (nameTrigger.ProcessingStage.HasFlag(DkmExceptionProcessingStage.Thrown) ||
                    nameTrigger.ProcessingStage.HasFlag(DkmExceptionProcessingStage.UserCodeSearch)
                    )
                {
                    _monitoredExceptions.Add(nameTrigger.Name);
                }
                else
                {
                    _monitoredExceptions.Remove(nameTrigger.Name);
                }

                bool isEmpty = _monitoredExceptions.Count == 0;
                if (wasEmpty != isEmpty)
                {
                    new LocalComponent.MonitorExceptionsRequest {
                        MonitorExceptions = !isEmpty
                    }.SendHigher(process);
                }
            }

            process.AddExceptionTrigger(sourceId, trigger);
        }
Esempio n. 2
0
        public void AddExceptionTrigger(DkmProcess process, Guid sourceId, DkmExceptionTrigger trigger) {
            var nameTrigger = trigger as DkmExceptionNameTrigger;
            if (nameTrigger != null && nameTrigger.ExceptionCategory == AD7Engine.DebugEngineGuid) {
                string name = nameTrigger.Name;
                bool wasEmpty = _monitoredExceptions.Count == 0;

                if (nameTrigger.ProcessingStage.HasFlag(DkmExceptionProcessingStage.Thrown) ||
                    nameTrigger.ProcessingStage.HasFlag(DkmExceptionProcessingStage.UserCodeSearch)
                ) {
                    _monitoredExceptions.Add(nameTrigger.Name);
                } else {
                    _monitoredExceptions.Remove(nameTrigger.Name);
                }

                bool isEmpty = _monitoredExceptions.Count == 0;
                if (wasEmpty != isEmpty) {
                    new LocalComponent.MonitorExceptionsRequest { MonitorExceptions = !isEmpty }.SendHigher(process);
                }
            }

            process.AddExceptionTrigger(sourceId, trigger);
        }
Esempio n. 3
0
        void IDkmExceptionManager.AddExceptionTrigger(DkmProcess process, Guid sourceId, DkmExceptionTrigger trigger)
        {
            var em = process.GetOrCreateDataItem(() => new ExceptionManager(process));

            em.AddExceptionTrigger(process, sourceId, trigger);
        }