Пример #1
0
        bool ShouldBreak(DbgException exception)
        {
            if (exception.IsUnhandled)
            {
                return(!debuggerSettings.IgnoreUnhandledExceptions);
            }

            var settings = dbgExceptionSettingsService.Value.GetSettings(exception.Id);

            if (!CheckBreakFlags(settings.Flags, exception.Flags))
            {
                return(false);
            }
            if (!CheckConditions(settings.Conditions, exception))
            {
                return(false);
            }

            return(true);
        }
Пример #2
0
        bool CheckConditions(DbgExceptionConditionSettings settings, DbgException exception)
        {
            Debug.Assert(settings.Condition != null);
            if (settings.Condition == null)
            {
                return(false);
            }

            switch (settings.ConditionType)
            {
            case DbgExceptionConditionType.ModuleNameEquals:
                return(ModuleNameEquals(settings, exception));

            case DbgExceptionConditionType.ModuleNameNotEquals:
                return(!ModuleNameEquals(settings, exception));

            default:
                Debug.Fail($"Unknown condition type: {settings.ConditionType}");
                return(false);
            }
        }
Пример #3
0
 bool CheckConditions(ReadOnlyCollection <DbgExceptionConditionSettings> conditions, DbgException exception)
 {
     if (conditions.Count != 0)
     {
         foreach (var condition in conditions)
         {
             if (!CheckConditions(condition, exception))
             {
                 return(false);
             }
         }
     }
     return(true);
 }
Пример #4
0
 bool ModuleNameEquals(DbgExceptionConditionSettings settings, DbgException exception) =>
 CompareStrings(exception.Module?.Name, settings.Condition);