Esempio n. 1
0
        public override bool WriteName(ITextColorWriter writer, DbgExceptionDefinition definition)
        {
            var fullName = definition.Id.Name;

            if (!string.IsNullOrEmpty(fullName))
            {
                var nsParts   = fullName.Split(nsSeps);
                int pos       = 0;
                var partColor = BoxedTextColor.Namespace;
                for (int i = 0; i < nsParts.Length - 1; i++)
                {
                    var ns  = nsParts[i];
                    var sep = fullName[pos + ns.Length];
                    if (sep == '+')
                    {
                        partColor = BoxedTextColor.Type;
                    }
                    writer.Write(partColor, ns);
                    writer.Write(BoxedTextColor.Operator, sep.ToString());
                    pos += ns.Length + 1;
                }
                writer.Write(BoxedTextColor.Type, nsParts[nsParts.Length - 1]);
            }
            return(true);
        }
Esempio n. 2
0
 public override void WriteName(IDbgTextWriter writer, DbgExceptionId id, bool includeDescription)
 {
     if (!exceptionSettingsService.Value.TryGetDefinition(id, out var def))
     {
         def = new DbgExceptionDefinition(id, DbgExceptionDefinitionFlags.None, description: null);
     }
     WriteName(writer, def, includeDescription);
 }
Esempio n. 3
0
 static bool Compare(DbgExceptionSettings settings, DbgExceptionDefinition def)
 {
     if (settings.Conditions.Count != 0)
     {
         return(false);
     }
     return(settings.Flags == def.Flags);
 }
Esempio n. 4
0
 void WriteDescription(IDbgTextWriter writer, DbgExceptionDefinition definition)
 {
     if (definition.Description is null)
     {
         return;
     }
     writer.Write(DbgTextColor.Comment, "(");
     writer.Write(DbgTextColor.Comment, definition.Description);
     writer.Write(DbgTextColor.Comment, ")");
 }
 void WriteDescription(ITextColorWriter writer, DbgExceptionDefinition definition)
 {
     if (definition.Description == null)
     {
         return;
     }
     writer.Write(BoxedTextColor.Comment, "(");
     writer.Write(BoxedTextColor.Comment, definition.Description);
     writer.Write(BoxedTextColor.Comment, ")");
 }
Esempio n. 6
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="definition">Exception definition</param>
 /// <param name="settings">Exception settings</param>
 public DbgExceptionSettingsInfo(DbgExceptionDefinition definition, DbgExceptionSettings settings)
 {
     if (definition.Id.Category is null)
     {
         throw new ArgumentException();
     }
     if (settings.Conditions is null)
     {
         throw new ArgumentException();
     }
     Definition = definition;
     Settings   = settings;
 }
Esempio n. 7
0
 void WriteNameCore(IDbgTextWriter writer, DbgExceptionDefinition definition)
 {
     if (!definition.Id.IsDefaultId && toFormatters.TryGetValue(definition.Id.Category, out var formatters))
     {
         foreach (var formatter in formatters)
         {
             if (formatter.Value.WriteName(writer, definition))
             {
                 return;
             }
         }
     }
     DefaultWriteName(writer, definition);
 }
Esempio n. 8
0
        void DefaultWriteName(IDbgTextWriter output, DbgExceptionDefinition definition)
        {
            switch (definition.Id.Kind)
            {
            case DbgExceptionIdKind.DefaultId:
                if (exceptionSettingsService.Value.TryGetCategoryDefinition(definition.Id.Category, out var categoryDef))
                {
                    output.Write(DbgTextColor.Text, string.Format(dnSpy_Debugger_Resources.AllRemainingExceptionsNotInList, categoryDef.DisplayName));
                }
                else
                {
                    WriteError(output);
                }
                break;

            case DbgExceptionIdKind.Code:
                DbgExceptionCategoryDefinitionFlags flags;
                if (exceptionSettingsService.Value.TryGetCategoryDefinition(definition.Id.Category, out categoryDef))
                {
                    flags = categoryDef.Flags;
                }
                else
                {
                    flags = DbgExceptionCategoryDefinitionFlags.None;
                }
                if ((flags & DbgExceptionCategoryDefinitionFlags.DecimalCode) == 0)
                {
                    output.Write(DbgTextColor.Number, "0x" + definition.Id.Code.ToString("X8"));
                }
                else if ((flags & DbgExceptionCategoryDefinitionFlags.UnsignedCode) != 0)
                {
                    output.Write(DbgTextColor.Number, ((uint)definition.Id.Code).ToString());
                }
                else
                {
                    output.Write(DbgTextColor.Number, definition.Id.Code.ToString());
                }
                break;

            case DbgExceptionIdKind.Name:
                output.Write(DbgTextColor.Keyword, definition.Id.Name);
                break;

            default:
                WriteError(output);
                break;
            }
        }
Esempio n. 9
0
 public override bool TryGetDefinition(DbgExceptionId id, out DbgExceptionDefinition definition)
 {
     if (id.Category is null)
     {
         throw new ArgumentException();
     }
     lock (lockObj) {
         if (toExceptionInfo.TryGetValue(id, out var info))
         {
             definition = info.Definition;
             return(true);
         }
     }
     definition = default;
     return(false);
 }
Esempio n. 10
0
 public override void WriteName(IDbgTextWriter writer, DbgExceptionDefinition definition, bool includeDescription)
 {
     if (writer is null)
     {
         throw new ArgumentNullException(nameof(writer));
     }
     if (definition.Id.Category is null)
     {
         throw new ArgumentException();
     }
     WriteNameCore(writer, definition);
     if (includeDescription && definition.Description is not null)
     {
         writer.Write(DbgTextColor.Text, " ");
         WriteDescription(writer, definition);
     }
 }
Esempio n. 11
0
 public override void WriteName(ITextColorWriter writer, DbgExceptionDefinition definition, bool includeDescription)
 {
     if (writer == null)
     {
         throw new ArgumentNullException(nameof(writer));
     }
     if (definition.Id.Category == null)
     {
         throw new ArgumentException();
     }
     WriteNameCore(writer, definition);
     if (includeDescription && definition.Description != null)
     {
         writer.WriteSpace();
         WriteDescription(writer, definition);
     }
 }
Esempio n. 12
0
            public override void Execute(string context)
            {
                if (context == null)
                {
                    return;
                }
                var id = new DbgExceptionId(PredefinedExceptionCategories.DotNet, context);

                if (dbgExceptionSettingsService.Value.TryGetSettings(id, out var settings))
                {
                    settings = new DbgExceptionSettings(settings.Flags | DbgExceptionDefinitionFlags.StopFirstChance, settings.Conditions);
                    dbgExceptionSettingsService.Value.Modify(id, settings);
                }
                else
                {
                    var def = new DbgExceptionDefinition(id, DbgExceptionDefinitionFlags.StopFirstChance | DbgExceptionDefinitionFlags.StopSecondChance);
                    settings = new DbgExceptionSettings(def.Flags);
                    var info = new DbgExceptionSettingsInfo(def, settings);
                    dbgExceptionSettingsService.Value.Add(info);
                }
            }
Esempio n. 13
0
 public abstract void WriteName(IDbgTextWriter writer, DbgExceptionDefinition definition, bool includeDescription);
Esempio n. 14
0
 public ExceptionInfo(DbgExceptionDefinition definition, DbgExceptionSettings settings)
 {
     Definition = definition;
     Settings   = settings;
 }