Exemple #1
0
        /// <summary>
        /// Write out the debug infro required for PDB files to the PE file.
        /// </summary>
        private void WriteDebugInfo()
        {
            if (pdbWriter != null)
            {                                                   // WINNT.h IMAGE_DEBUG_DIRECTORY
                WriteZeros(4);                                  // Characteristics
                Write(dateStamp);                               // Date stamp
                WriteZeros(4);                                  // Major Version, Minor Version
                Write(2);                                       // Type  (Code View???)
                Write(debugBytesSize);                          // Size of Data
                WriteZeros(4);                                  // Address of Raw Data
                Write(text.Offset() + debugOffset + debugSize); // Pointer to Raw Data

                if (Diag.DiagOn)
                {
                    Debug.WriteLine("Debug Bytes Offset: " + BaseStream.Length.ToString());
                }

                // Remember where the debug bytes need to be written to
                debugBytesStartOffset = BaseStream.Length;

                // For now don't write the real debug bytes.
                // Just fill the space so we can come and write them later.
                // Write(debugBytes);
                WriteZeros((uint)debugBytesSize);

                WriteZeros(NumToAlign((uint)debugBytesSize, 4));
            }
        }