From 833561584292175c3eafaa942f30720bc461e2a1 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Fri, 13 Jul 2018 14:45:17 +0200 Subject: [PATCH] Add IDebugInfoProvider.Description property --- .../MonoCecilDebugInfoProvider.cs | 13 ++++++++----- .../DebugInfo/IDebugInfoProvider.cs | 1 + ILSpy/DebugInfo/DiaSymNativeDebugInfoProvider.cs | 2 ++ ILSpy/DebugInfo/PortableDebugInfoProvider.cs | 2 ++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ICSharpCode.Decompiler.PdbProvider.Cecil/MonoCecilDebugInfoProvider.cs b/ICSharpCode.Decompiler.PdbProvider.Cecil/MonoCecilDebugInfoProvider.cs index 7cdef4c9a..97ac583cd 100644 --- a/ICSharpCode.Decompiler.PdbProvider.Cecil/MonoCecilDebugInfoProvider.cs +++ b/ICSharpCode.Decompiler.PdbProvider.Cecil/MonoCecilDebugInfoProvider.cs @@ -31,16 +31,19 @@ namespace ICSharpCode.Decompiler.PdbProvider.Cecil { public class MonoCecilDebugInfoProvider : IDebugInfoProvider { - ModuleDefinition module; + readonly ModuleDefinition module; - public MonoCecilDebugInfoProvider(ModuleDefinition module) + public MonoCecilDebugInfoProvider(ModuleDefinition module, string description = null) { this.module = module; + this.Description = description ?? "none"; } + public string Description { get; } + public IList GetSequencePoints(SRM.MethodDefinitionHandle handle) { - var method = this.module.LookupToken(MetadataTokens.GetToken(handle)) as Mono.Cecil.MethodDefinition; + var method = this.module.LookupToken(MetadataTokens.GetToken(handle)) as MethodDefinition; if (method?.DebugInformation == null || !method.DebugInformation.HasSequencePoints) return EmptyList.Instance; return method.DebugInformation.SequencePoints.Select(point => new SequencePoint { @@ -55,7 +58,7 @@ namespace ICSharpCode.Decompiler.PdbProvider.Cecil public IList GetVariables(SRM.MethodDefinitionHandle handle) { - var method = this.module.LookupToken(MetadataTokens.GetToken(handle)) as Mono.Cecil.MethodDefinition; + var method = this.module.LookupToken(MetadataTokens.GetToken(handle)) as MethodDefinition; if (method?.DebugInformation == null) return EmptyList.Instance; return method.DebugInformation.GetScopes() @@ -65,7 +68,7 @@ namespace ICSharpCode.Decompiler.PdbProvider.Cecil public bool TryGetName(SRM.MethodDefinitionHandle handle, int index, out string name) { - var method = this.module.LookupToken(MetadataTokens.GetToken(handle)) as Mono.Cecil.MethodDefinition; + var method = this.module.LookupToken(MetadataTokens.GetToken(handle)) as MethodDefinition; name = null; if (method?.DebugInformation == null || !method.HasBody) return false; diff --git a/ICSharpCode.Decompiler/DebugInfo/IDebugInfoProvider.cs b/ICSharpCode.Decompiler/DebugInfo/IDebugInfoProvider.cs index c35c47bf2..aad75e954 100644 --- a/ICSharpCode.Decompiler/DebugInfo/IDebugInfoProvider.cs +++ b/ICSharpCode.Decompiler/DebugInfo/IDebugInfoProvider.cs @@ -12,6 +12,7 @@ namespace ICSharpCode.Decompiler.DebugInfo public interface IDebugInfoProvider { + string Description { get; } IList GetSequencePoints(MethodDefinitionHandle method); IList GetVariables(MethodDefinitionHandle method); bool TryGetName(MethodDefinitionHandle method, int index, out string name); diff --git a/ILSpy/DebugInfo/DiaSymNativeDebugInfoProvider.cs b/ILSpy/DebugInfo/DiaSymNativeDebugInfoProvider.cs index add40845d..fe3d58ef7 100644 --- a/ILSpy/DebugInfo/DiaSymNativeDebugInfoProvider.cs +++ b/ILSpy/DebugInfo/DiaSymNativeDebugInfoProvider.cs @@ -49,6 +49,8 @@ namespace ICSharpCode.ILSpy.DebugInfo this.reader = SymUnmanagedReaderFactory.CreateReader(stream, this); } + public string Description => $"Loaded from PDB file: {pdbFileName}"; + public IList GetSequencePoints(MethodDefinitionHandle handle) { var method = reader.GetMethod(MetadataTokens.GetToken(handle)); diff --git a/ILSpy/DebugInfo/PortableDebugInfoProvider.cs b/ILSpy/DebugInfo/PortableDebugInfoProvider.cs index 6ff89db90..323975b39 100644 --- a/ILSpy/DebugInfo/PortableDebugInfoProvider.cs +++ b/ILSpy/DebugInfo/PortableDebugInfoProvider.cs @@ -35,6 +35,8 @@ namespace ICSharpCode.ILSpy.DebugInfo this.provider = provider; } + public string Description => pdbFileName == null ? "Embedded in this assembly" : $"Loaded from portable PDB: {pdbFileName}"; + public IList GetSequencePoints(MethodDefinitionHandle method) { var metadata = provider.GetMetadataReader();