/// <summary> /// Creates a new <see cref="ISymbolReader"/> instance /// </summary> /// <param name="pdbStream">PDB file stream which is now owned by this method</param> /// <returns>A new <see cref="ISymbolReader"/> instance or <c>null</c>.</returns> public static ISymbolReader Create(IImageStream pdbStream) { if (pdbStream == null) { return(null); } try { var pdbReader = new PdbReader(); pdbReader.Read(pdbStream); return(pdbReader); } catch (IOException) { } catch (UnauthorizedAccessException) { } catch (SecurityException) { } finally { if (pdbStream != null) { pdbStream.Dispose(); } } return(null); }
/// <summary> /// Creates a new <see cref="SymbolReader"/> instance /// </summary> /// <param name="pdbContext">PDB context</param> /// <param name="pdbStream">PDB file stream which is now owned by this method</param> /// <returns>A new <see cref="SymbolReader"/> instance or <c>null</c>.</returns> public static SymbolReader Create(PdbReaderContext pdbContext, DataReaderFactory pdbStream) { if (pdbStream is null) { return(null); } try { var debugDir = pdbContext.CodeViewDebugDirectory; if (debugDir is null) { return(null); } if (!pdbContext.TryGetCodeViewData(out var pdbGuid, out uint age)) { return(null); } var pdbReader = new PdbReader(pdbGuid, age); pdbReader.Read(pdbStream.CreateReader()); if (pdbReader.MatchesModule) { return(pdbReader); } return(null); } catch (PdbException) { } catch (IOException) { } finally { pdbStream?.Dispose(); } return(null); }
/// <summary> /// Creates a new <see cref="ISymbolReader"/> instance /// </summary> /// <param name="pdbStream">PDB file stream which is now owned by this method</param> /// <returns>A new <see cref="ISymbolReader"/> instance or <c>null</c>.</returns> public static ISymbolReader Create(IImageStream pdbStream) { if (pdbStream == null) return null; try { var pdbReader = new PdbReader(); pdbReader.Read(pdbStream); return pdbReader; } catch (IOException) { } catch (UnauthorizedAccessException) { } catch (SecurityException) { } finally { if (pdbStream != null) pdbStream.Dispose(); } return null; }
/// <summary> /// Creates a new <see cref="SymbolReader"/> instance /// </summary> /// <param name="pdbStream">PDB file stream which is now owned by this method</param> /// <returns>A new <see cref="SymbolReader"/> instance or <c>null</c>.</returns> public static SymbolReader Create(IImageStream pdbStream) { if (pdbStream == null) { return(null); } try { var pdbReader = new PdbReader(); pdbReader.Read(pdbStream); return(pdbReader); } catch (PdbException) { } catch (IOException) { } finally { if (pdbStream != null) { pdbStream.Dispose(); } } return(null); }