Beispiel #1
0
        public void Close()
        {
            InitWriter();

            foreach (Method method in methods)
            {
                int remappedToken = method.token;
                remap.TryGetValue(remappedToken, out remappedToken);
                symUnmanagedWriter.OpenMethod(remappedToken);
                if (method.document != null)
                {
                    ISymUnmanagedDocumentWriter doc = method.document.GetUnmanagedDocument(symUnmanagedWriter);
                    symUnmanagedWriter.DefineSequencePoints(doc, method.offsets.Length, method.offsets, method.lines, method.columns, method.endLines, method.endColumns);
                }
                foreach (Scope scope in method.scopes)
                {
                    scope.Do(symUnmanagedWriter);
                }
                symUnmanagedWriter.CloseMethod();
            }

            foreach (Document doc in documents.Values)
            {
                doc.Release();
            }

            symUnmanagedWriter.Close();
            Marshal.ReleaseComObject(symUnmanagedWriter);
            symUnmanagedWriter = null;
            documents.Clear();
            methods.Clear();
            remap.Clear();
            reversemap.Clear();
        }
Beispiel #2
0
 private void OpenMethod(uint methodToken)
 {
     try
     {
         _symWriter.OpenMethod(methodToken);
         _symWriter.OpenScope(0);
     }
     catch (Exception ex)
     {
         throw new PdbWritingException(ex);
     }
 }
Beispiel #3
0
        private void OpenMethod(uint methodToken)
        {
            try
            {
                _symWriter.OpenMethod(methodToken);

                // open root scope:
                _symWriter.OpenScope(startOffset: 0);
            }
            catch (Exception ex)
            {
                throw new PdbWritingException(ex);
            }
        }
        public void Write(Function function)
        {
            pdb.OpenMethod(function.Token);

            WriteSources(function.Sources);
            WriteScopes(function.Scopes, function);
            WriteConstants(function.Constants);
            WriteVariables(function.Variables, function.VariablesToken, 0, 0);

            WriteIteratorClass(function);
            WriteIteratorScopes(function);

            // TODO
            // function.namespaceScopes
            // function.usedNamespaces
            // function.usingCounts

            pdb.CloseMethod();
        }
Beispiel #5
0
 public void OpenMethod(SymbolToken method)
 {
     m_writer.OpenMethod(method);
 }
Beispiel #6
0
 public void OpenMethod(SymbolToken method)
 {
     writer.OpenMethod((uint)method.GetToken());
 }
Beispiel #7
0
 public void OpenMethod(int methodToken)
 {
     m_writer.OpenMethod(methodToken);
 }
 public override void OpenMethod(MDToken method) => writer.OpenMethod(method.Raw);
Beispiel #9
0
 public void OpenMethod(SymbolToken tok)
 {
     writer.OpenMethod(tok);
 }