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);
        }
예제 #2
0
 public static SourceMethodBuilder OpenMethod(ICompileUnit file, IMethodDef method)
 {
     if (symwriter != null)
     {
         return(symwriter.OpenMethod(file, -1 /* Not used */, method));
     }
     else
     {
         return(null);
     }
 }
예제 #3
0
 public static SourceMethodBuilder OpenMethod(ICompileUnit file, int ns_id,
                                              IMethodDef method)
 {
     if (symwriter != null)
     {
         return(symwriter.OpenMethod(file, ns_id, method));
     }
     else
     {
         return(null);
     }
 }