public static unsafe EditAndContinueMethodDebugInformation GetEncMethodDebugInfo(this ISymUnmanagedReader3 symReader, MethodDefinitionHandle handle) { const int S_OK = 0; if (symReader is ISymUnmanagedReader4 symReader4) { int hr = symReader4.GetPortableDebugMetadata(out byte *metadata, out int size); Marshal.ThrowExceptionForHR(hr); if (hr == S_OK) { var pdbReader = new MetadataReader(metadata, size); ImmutableArray <byte> GetCdiBytes(Guid kind) => TryGetCustomDebugInformation(pdbReader, handle, kind, out var info) ? pdbReader.GetBlobContent(info.Value) : default(ImmutableArray <byte>); return(EditAndContinueMethodDebugInformation.Create( compressedSlotMap: GetCdiBytes(PortableCustomDebugInfoKinds.EncLocalSlotMap), compressedLambdaMap: GetCdiBytes(PortableCustomDebugInfoKinds.EncLambdaAndClosureMap))); } } var cdi = CustomDebugInfoUtilities.GetCustomDebugInfoBytes(symReader, handle, methodVersion: 1); if (cdi == null) { return(EditAndContinueMethodDebugInformation.Create(default(ImmutableArray <byte>), default(ImmutableArray <byte>))); } return(GetEncMethodDebugInfo(cdi)); }
public static EditAndContinueMethodDebugInformation GetEncMethodDebugInfo( byte[] customDebugInfoBlob ) { return(EditAndContinueMethodDebugInformation.Create( CustomDebugInfoUtilities.GetEditAndContinueLocalSlotMapRecord(customDebugInfoBlob), CustomDebugInfoUtilities.GetEditAndContinueLambdaMapRecord(customDebugInfoBlob) )); }
public static EditAndContinueMethodDebugInformation GetEncMethodDebugInfo(this ISymUnmanagedReader3 symReader, MethodDefinitionHandle handle) { var cdi = CustomDebugInfoUtilities.GetCustomDebugInfoBytes(symReader, handle, methodVersion: 1); if (cdi == null) { return(EditAndContinueMethodDebugInformation.Create(default(ImmutableArray <byte>), default(ImmutableArray <byte>))); } return(GetEncMethodDebugInfo(cdi)); }