diff --git a/tracer/src/Datadog.Trace/Debugger/SpanCodeOrigin/EndpointDetector.cs b/tracer/src/Datadog.Trace/Debugger/SpanCodeOrigin/EndpointDetector.cs index 5f138b4e3bce..6642d5b89e28 100644 --- a/tracer/src/Datadog.Trace/Debugger/SpanCodeOrigin/EndpointDetector.cs +++ b/tracer/src/Datadog.Trace/Debugger/SpanCodeOrigin/EndpointDetector.cs @@ -181,21 +181,40 @@ private static bool HasAttributeFromSet(CustomAttributeHandleCollection attribut { string fullName; var attribute = reader.GetCustomAttribute(attributeHandle); - if (attribute.Constructor.Kind == HandleKind.MemberReference) + switch (attribute.Constructor.Kind) { - var ctor = reader.GetMemberReference((MemberReferenceHandle)attribute.Constructor); - var attributeType = reader.GetTypeReference((TypeReferenceHandle)ctor.Parent); - fullName = GetFullTypeName(attributeType.Namespace, attributeType.Name, reader); - } - else if (attribute.Constructor.Kind == HandleKind.MethodDefinition) - { - var ctor = reader.GetMethodDefinition((MethodDefinitionHandle)attribute.Constructor); - var attributeType = reader.GetTypeDefinition(ctor.GetDeclaringType()); - fullName = GetFullTypeName(attributeType.Namespace, attributeType.Name, reader); - } - else - { - continue; + case HandleKind.MemberReference: + { + var ctor = reader.GetMemberReference((MemberReferenceHandle)attribute.Constructor); + switch (ctor.Parent.Kind) + { + case HandleKind.TypeReference: + var tr = reader.GetTypeReference((TypeReferenceHandle)ctor.Parent); + fullName = GetFullTypeName(tr.Namespace, tr.Name, reader); + break; + + case HandleKind.TypeDefinition: + var td = reader.GetTypeDefinition((TypeDefinitionHandle)ctor.Parent); + fullName = GetFullTypeName(td.Namespace, td.Name, reader); + break; + + default: + continue; + } + + break; + } + + case HandleKind.MethodDefinition: + { + var ctor = reader.GetMethodDefinition((MethodDefinitionHandle)attribute.Constructor); + var td = reader.GetTypeDefinition(ctor.GetDeclaringType()); + fullName = GetFullTypeName(td.Namespace, td.Name, reader); + break; + } + + default: + continue; } if (attributeNames.Contains(fullName)) diff --git a/tracer/src/Datadog.Trace/Debugger/SpanCodeOrigin/SpanCodeOriginManager.cs b/tracer/src/Datadog.Trace/Debugger/SpanCodeOrigin/SpanCodeOriginManager.cs index 77b0d99d0523..d9bd52888e6a 100644 --- a/tracer/src/Datadog.Trace/Debugger/SpanCodeOrigin/SpanCodeOriginManager.cs +++ b/tracer/src/Datadog.Trace/Debugger/SpanCodeOrigin/SpanCodeOriginManager.cs @@ -148,7 +148,7 @@ private void AddEntrySpanTags(Span span, Type type, MethodInfo method) } catch (Exception ex) { - Log.Error(ex, "Failed to load PDB info for assembly {AssemblyName}", asm.Location); + Log.Error(ex, "Error while getting endpoints for assembly: {AssemblyName}", asm.Location); return null; } });