public void Initialize (object emitter, string filename, object ptrIStream, bool fullBuild)
		{
			var writerField = typeof(PdbMetadataWrapper).GetRuntimeFields().First((f) => f.Name == "_writer");
			writer = (MetadataWriter)writerField.GetValue(emitter);

			msw = new MonoSymbolWriter(new UnsafeComStreamWrapper((ComMemoryStream)ptrIStream));
		}
        public void Initialize(object emitter, string filename, object ptrIStream, bool fullBuild)
        {
            var writerField = typeof(PdbMetadataWrapper).GetRuntimeFields().First((f) => f.Name == "_writer");

            writer = (MetadataWriter)writerField.GetValue(emitter);

            msw = new MonoSymbolWriter(new UnsafeComStreamWrapper((ComMemoryStream)ptrIStream));
        }
示例#3
0
        internal static void Convert(AssemblyDefinition assembly, IEnumerable<PdbFunction> functions, MonoSymbolWriter mdb)
        {
            var converter = new Converter (mdb);

            foreach (var function in functions)
                converter.ConvertFunction (function);

            mdb.WriteSymbolFile (assembly.MainModule.Mvid);
        }
示例#4
0
文件: location.cs 项目: afaerber/mono
		public virtual void DefineSymbolInfo (MonoSymbolWriter symwriter)
		{
			if (guid != null)
				file = symwriter.DefineDocument (Path, guid, checksum);
			else {
				file = symwriter.DefineDocument (Path);
				if (AutoGenerated)
					file.SetAutoGenerated ();
			}
		}
示例#5
0
 internal Converter(MonoSymbolWriter mdb)
 {
     this.mdb = mdb;
 }
示例#6
0
        /*
        static void Main (string [] args)
        {
            if (args.Length != 1)
                Usage ();

            var asm = args [0];

            if (!File.Exists (asm))
                Usage ();

            var assembly = AssemblyDefinition.ReadAssembly (asm);

            var pdb = assembly.Name.Name + ".pdb";
            pdb = Path.Combine (Path.GetDirectoryName (asm), pdb);

            if (!File.Exists (pdb))
                Usage ();

            using (var stream = File.OpenRead (pdb)) {
                Convert (assembly, stream, new MonoSymbolWriter (asm));
            }
        }*/
        static void Convert(AssemblyDefinition assembly, Stream pdb, MonoSymbolWriter mdb)
        {
            try {
                Converter.Convert (assembly, PdbFile.LoadFunctions (pdb, true), mdb);
            } catch (Exception e) {
                Error (e);
            }
        }
示例#7
0
        SourceFile GetSourceFile(MonoSymbolWriter mdb, PdbFunction function)
        {
            var name = (from l in function.lines where l.file != null select l.file.name).First ();

            SourceFile file;
            if (files.TryGetValue (name, out file))
                return file;

            var entry = mdb.DefineDocument (name);
            var unit = mdb.DefineCompilationUnit (entry);

            file = new SourceFile (unit, entry);
            files.Add (name, file);
            return file;
        }
示例#8
0
		public void Write (MonoSymbolWriter writer)
		{
			LineNumberEntry[] the_lines = new LineNumberEntry [lines.Count];
			lines.CopyTo (the_lines, 0);

			LocalVariableEntry[] locals = method.GetLocalVars ();

			MethodEntry entry = writer.SymbolFile.DefineMethod (
				file, Token, null, locals, the_lines, null, null, 0, 0);
		}
		public void Close()
		{
			MonoSymbolWriter writer = new MonoSymbolWriter(moduleBuilder.FullyQualifiedName);

			foreach (Method method in methods.Values)
			{
				if (method.document != null)
				{
					if (method.document.source == null)
					{
						method.document.source = new SourceFileEntry(writer.SymbolFile, method.document.url);
					}
					ICompileUnit file = new CompileUnitEntry(writer.SymbolFile, method.document.source);
					SourceMethodBuilder smb = writer.OpenMethod(file, 0, method);
					for (int i = 0; i < method.offsets.Length; i++)
					{
						smb.MarkSequencePoint(method.offsets[i], method.document.source, method.lines[i], method.columns[i], false);
					}
					for (int i = 0; i < method.variables.Count; i++)
					{
						writer.DefineLocalVariable(i, method.variables[i]);
					}
					writer.CloseMethod();
				}
			}

			writer.WriteSymbolFile(moduleBuilder.ModuleVersionId);
		}
示例#10
0
		public static void Reset ()
		{
			symwriter = null;
		}
示例#11
0
		//
		// Creates symbol file index in debug symbol file
		//
		void CreateUnitSymbolInfo (MonoSymbolWriter symwriter)
		{
			var si = file.CreateSymbolInfo (symwriter);
			comp_unit = symwriter.DefineCompilationUnit (si);

			if (include_files != null) {
				foreach (SourceFile include in include_files.Values) {
					si = include.CreateSymbolInfo (symwriter);
					comp_unit.AddFile (si);
				}
			}
		}
 public void Initialize(IntPtr emitter, string filename, bool fFullBuild)
 {
     msw = new MonoSymbolWriter(filename);
 }
示例#13
0
文件: Driver.cs 项目: telurmasin/mono
		public Converter (MonoSymbolWriter mdb)
		{
			this.mdb = mdb;
		}
示例#14
0
文件: location.cs 项目: afaerber/mono
		// <remarks>
		//   If we're compiling with debugging support, this is called between parsing
		//   and code generation to register all the source files with the
		//   symbol writer.
		// </remarks>
		static public void DefineSymbolDocuments (MonoSymbolWriter symwriter)
		{
			foreach (CompilationUnit unit in compile_units)
				unit.DefineSymbolInfo (symwriter);
		}
示例#15
0
文件: location.cs 项目: afaerber/mono
		public override void DefineSymbolInfo (MonoSymbolWriter symwriter)
		{
			base.DefineSymbolInfo (symwriter);

			comp_unit = symwriter.DefineCompilationUnit (SourceFileEntry);

			if (include_files != null) {
				foreach (SourceFile include in include_files.Values) {
					include.DefineSymbolInfo (symwriter);
					comp_unit.AddFile (include.SourceFileEntry);
				}
			}
		}
示例#16
0
		public void Initialize (IntPtr emitter, string filename, bool fFullBuild)
		{
			msw = new MonoSymbolWriter (filename);
		}
 public MdbWriter(Guid mvid, string assembly)
 {
     this.mvid = mvid;
     this.writer = new MonoSymbolWriter (assembly);
     this.source_files = new Dictionary<string, SourceFile> ();
 }
		public MdbWriter (Guid mvid, string assembly)
		{
			m_mvid = mvid;
			m_writer = new MonoSymbolWriter (assembly);
			m_documents = new Hashtable ();
		}