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); }
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); }
void IDkmExceptionManager.AddExceptionTrigger(DkmProcess process, Guid sourceId, DkmExceptionTrigger trigger) { var em = process.GetOrCreateDataItem(() => new ExceptionManager(process)); em.AddExceptionTrigger(process, sourceId, trigger); }