Exemplo n.º 1
0
        /// <summary>
        /// Converts Portable PDB to Windows PDB.
        /// </summary>
        /// <param name="peReader">PE reader.</param>
        /// <param name="pdbReader">Portable PDB reader.</param>
        /// <param name="targetPdbStream">Target stream of Windows PDB data. Must be writable.</param>
        /// <param name="options">Conversion options.</param>
        /// <exception cref="ArgumentNullException"><paramref name="peReader"/>, <paramref name="pdbReader"/>, or <paramref name="targetPdbStream"/> is null.</exception>
        /// <exception cref="ArgumentException"><paramref name="targetPdbStream"/> does not support writing.</exception>
        /// <exception cref="BadImageFormatException">The format of the PE image or the source PDB image is invalid.</exception>
        /// <exception cref="InvalidDataException">The PDB doesn't match the CodeView Debug Directory record in the PE image.</exception>
        /// <exception cref="IOException">IO error while reading from or writing to a stream.</exception>
        /// <exception cref="ObjectDisposedException">Stream has been disposed while reading/writing.</exception>
        public void ConvertPortableToWindows(PEReader peReader, MetadataReader pdbReader, Stream targetPdbStream, PdbConversionOptions options = default(PdbConversionOptions))
        {
            if (pdbReader == null)
            {
                throw new ArgumentNullException(nameof(pdbReader));
            }

            StreamUtilities.ValidateStream(targetPdbStream, nameof(targetPdbStream), writeRequired: true);

            using (var pdbWriter = new SymUnmanagedWriter(peReader.GetMetadataReader()))
            {
                ConvertPortableToWindows(peReader, pdbReader, pdbWriter, options);
                pdbWriter.WriteTo(targetPdbStream);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Converts Portable PDB stream to Windows PDB.
 /// </summary>
 /// <param name="peReader">PE reader.</param>
 /// <param name="pdbReader">Portable PDB reader.</param>
 /// <param name="pdbWriter">PDB writer.</param>
 /// <param name="options">Conversion options.</param>
 /// <exception cref="ArgumentNullException"><paramref name="peReader"/>, <paramref name="pdbReader"/>, or <paramref name="pdbWriter"/> is null.</exception>
 /// <exception cref="BadImageFormatException">The format of the PE image or the source PDB image is invalid.</exception>
 /// <exception cref="InvalidDataException">The PDB doesn't match the CodeView Debug Directory record in the PE image.</exception>
 /// <exception cref="IOException">IO error while reading from or writing to a stream.</exception>
 public void ConvertPortableToWindows(PEReader peReader, MetadataReader pdbReader, SymUnmanagedWriter pdbWriter, PortablePdbConversionOptions options = null)
 {
     new PdbConverterPortableToWindows(_diagnosticReporterOpt).Convert(
         peReader ?? throw new ArgumentNullException(nameof(peReader)),
         pdbReader ?? throw new ArgumentNullException(nameof(pdbReader)),
         pdbWriter ?? throw new ArgumentNullException(nameof(pdbWriter)),
         options ?? PortablePdbConversionOptions.Default);
 }
Exemplo n.º 3
0
 public DelegatingSymUnmanagedWriter(SymUnmanagedWriter target)
 {
     _target = target;
 }