} // end _RaiseEvent() private bool _FiltersSayOutput(DbgEventArgs notification) { // TODO: this is super awkward... if (null == m_debugger.m_exceptionEventFilterIndex) { m_debugger._GetEventFilters(); } DbgEventFilter filter = notification.FindMatchingFilter(m_debugger.m_specificEventFilterIndex, m_debugger.m_exceptionEventFilterIndex); if (null == filter) { // TODO: need to figure out how to decide if these events should be outputted return(false); } if ((filter.ExecutionOption == DEBUG_FILTER_EXEC_OPTION.BREAK) || (filter.ExecutionOption == DEBUG_FILTER_EXEC_OPTION.OUTPUT)) { return(true); } if (filter.ExecutionOption == DEBUG_FILTER_EXEC_OPTION.SECOND_CHANCE_BREAK) { ExceptionEventArgs eea = notification as ExceptionEventArgs; if (null == eea) { Util.Fail("How did we get a filter set to 2nd-chance break when the event is not an exception event?"); return(true); } return(!eea.IsFirstChance); } return(false); } // end _FiltersSayOutput()
} // end _FiltersSayOutput() private bool _ShouldOutput(int status, DbgEventArgs eventArgs) { if (m_suppressOutput) { return(false); } return((status != 0) || _FiltersSayOutput(eventArgs)); } // end _ShouldOutput()