예제 #1
0
            } // 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()
예제 #2
0
            } // end _FiltersSayOutput()

            private bool _ShouldOutput(int status, DbgEventArgs eventArgs)
            {
                if (m_suppressOutput)
                {
                    return(false);
                }

                return((status != 0) || _FiltersSayOutput(eventArgs));
            } // end _ShouldOutput()