コード例 #1
0
 /// <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);
 }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
ファイル: SymbolReaderCreator.cs プロジェクト: EmilZhou/dnlib
		/// <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;
		}
コード例 #4
0
 /// <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);
 }