internal void GenerateDebugInfo(ISymbolWriter symbolWriter) { if (sequencePointLists != null) { SequencePointList first = (SequencePointList)sequencePointLists [0]; SequencePointList last = (SequencePointList)sequencePointLists [sequencePointLists.Count - 1]; symbolWriter.SetMethodSourceRange(first.Document, first.StartLine, first.StartColumn, last.Document, last.EndLine, last.EndColumn); foreach (SequencePointList list in sequencePointLists) { symbolWriter.DefineSequencePoints(list.Document, list.GetOffsets(), list.GetLines(), list.GetColumns(), list.GetEndLines(), list.GetEndColumns()); } if (locals != null) { foreach (LocalBuilder local in locals) { if (local.Name != null && local.Name.Length > 0) { SignatureHelper sighelper = SignatureHelper.GetLocalVarSigHelper(module as ModuleBuilder); sighelper.AddArgument(local.LocalType); byte[] signature = sighelper.GetSignature(); symbolWriter.DefineLocalVariable(local.Name, FieldAttributes.Public, signature, SymAddressKind.ILOffset, local.position, 0, 0, local.StartOffset, local.EndOffset); } } } sequencePointLists = null; } }
internal void EmitLineNumberInfo(ISymbolWriter symWriter) { if (this.m_iLineNumberCount != 0) { int[] destinationArray = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iOffsets, destinationArray, this.m_iLineNumberCount); int[] numArray2 = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iLines, numArray2, this.m_iLineNumberCount); int[] numArray3 = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iColumns, numArray3, this.m_iLineNumberCount); int[] numArray4 = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iEndLines, numArray4, this.m_iLineNumberCount); int[] numArray5 = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iEndColumns, numArray5, this.m_iLineNumberCount); symWriter.DefineSequencePoints(this.m_document, destinationArray, numArray2, numArray3, numArray4, numArray5); } }
internal void EmitLineNumberInfo(ISymbolWriter symWriter) { if (this.m_iLineNumberCount == 0) { return; } int[] offsets = new int[this.m_iLineNumberCount]; Array.Copy((Array)this.m_iOffsets, (Array)offsets, this.m_iLineNumberCount); int[] lines = new int[this.m_iLineNumberCount]; Array.Copy((Array)this.m_iLines, (Array)lines, this.m_iLineNumberCount); int[] columns = new int[this.m_iLineNumberCount]; Array.Copy((Array)this.m_iColumns, (Array)columns, this.m_iLineNumberCount); int[] endLines = new int[this.m_iLineNumberCount]; Array.Copy((Array)this.m_iEndLines, (Array)endLines, this.m_iLineNumberCount); int[] endColumns = new int[this.m_iLineNumberCount]; Array.Copy((Array)this.m_iEndColumns, (Array)endColumns, this.m_iLineNumberCount); symWriter.DefineSequencePoints(this.m_document, offsets, lines, columns, endLines, endColumns); }
// Token: 0x060049E5 RID: 18917 RVA: 0x0010B324 File Offset: 0x00109524 internal void EmitLineNumberInfo(ISymbolWriter symWriter) { if (this.m_iLineNumberCount == 0) { return; } int[] array = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iOffsets, array, this.m_iLineNumberCount); int[] array2 = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iLines, array2, this.m_iLineNumberCount); int[] array3 = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iColumns, array3, this.m_iLineNumberCount); int[] array4 = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iEndLines, array4, this.m_iLineNumberCount); int[] array5 = new int[this.m_iLineNumberCount]; Array.Copy(this.m_iEndColumns, array5, this.m_iLineNumberCount); symWriter.DefineSequencePoints(this.m_document, array, array2, array3, array4, array5); }
[System.Security.SecurityCritical] // auto-generated #endif internal void EmitLineNumberInfo(ISymbolWriter symWriter) { int[] iOffsetsTemp; int[] iLinesTemp; int[] iColumnsTemp; int[] iEndLinesTemp; int[] iEndColumnsTemp; if (m_iLineNumberCount == 0) return; // reduce the array size to be exact iOffsetsTemp = new int [m_iLineNumberCount]; Array.Copy(m_iOffsets, iOffsetsTemp, m_iLineNumberCount); iLinesTemp = new int [m_iLineNumberCount]; Array.Copy(m_iLines, iLinesTemp, m_iLineNumberCount); iColumnsTemp = new int [m_iLineNumberCount]; Array.Copy(m_iColumns, iColumnsTemp, m_iLineNumberCount); iEndLinesTemp = new int [m_iLineNumberCount]; Array.Copy(m_iEndLines, iEndLinesTemp, m_iLineNumberCount); iEndColumnsTemp = new int [m_iLineNumberCount]; Array.Copy(m_iEndColumns, iEndColumnsTemp, m_iLineNumberCount); symWriter.DefineSequencePoints(m_document, iOffsetsTemp, iLinesTemp, iColumnsTemp, iEndLinesTemp, iEndColumnsTemp); }
internal void GenerateDebugInfo (ISymbolWriter symbolWriter) { if (sequencePointLists != null) { SequencePointList first = (SequencePointList) sequencePointLists [0]; SequencePointList last = (SequencePointList) sequencePointLists [sequencePointLists.Count - 1]; symbolWriter.SetMethodSourceRange (first.Document, first.StartLine, first.StartColumn, last.Document, last.EndLine, last.EndColumn); foreach (SequencePointList list in sequencePointLists) symbolWriter.DefineSequencePoints (list.Document, list.GetOffsets(), list.GetLines(), list.GetColumns(), list.GetEndLines(), list.GetEndColumns()); if (locals != null) { foreach (LocalBuilder local in locals) { if (local.Name != null && local.Name.Length > 0) { SignatureHelper sighelper = SignatureHelper.GetLocalVarSigHelper (module as ModuleBuilder); sighelper.AddArgument (local.LocalType); byte[] signature = sighelper.GetSignature (); symbolWriter.DefineLocalVariable (local.Name, FieldAttributes.Public, signature, SymAddressKind.ILOffset, local.position, 0, 0, local.StartOffset, local.EndOffset); } } } sequencePointLists = null; } }
void CreateScopes(MethodBody body, ScopeCollection scopes) { foreach (Scope s in scopes) { int startOffset = s.Start.Offset; int endOffset = s.End == body.Instructions.Outside ? body.Instructions[body.Instructions.Count - 1].Offset + 1 : s.End.Offset; m_writer.OpenScope(startOffset); m_writer.UsingNamespace(body.Method.DeclaringType.Namespace); m_writer.OpenNamespace(body.Method.DeclaringType.Namespace); int start = Math.Max(0, body.Instructions.IndexOf(s.Start)); int end = s.End == body.Instructions.Outside ? body.Instructions.Count - 1 : body.Instructions.IndexOf(s.End); ArrayList instructions = new ArrayList(); for (int i = start; i <= end; i++) { if (body.Instructions[i] != null && body.Instructions[i].SequencePoint != null) { instructions.Add(body.Instructions [i]); } } Document doc = null; int [] offsets = new int [instructions.Count]; int [] startRows = new int [instructions.Count]; int [] startCols = new int [instructions.Count]; int [] endRows = new int [instructions.Count]; int [] endCols = new int [instructions.Count]; for (int i = 0; i < instructions.Count; i++) { Instruction instr = (Instruction)instructions [i]; offsets [i] = instr.Offset; if (doc == null) { doc = instr.SequencePoint.Document; } startRows [i] = instr.SequencePoint.StartLine; startCols [i] = instr.SequencePoint.StartColumn; endRows [i] = instr.SequencePoint.EndLine; endCols [i] = instr.SequencePoint.EndColumn; } if (doc != null) { m_writer.DefineSequencePoints(GetDocument(doc), offsets, startRows, startCols, endRows, endCols); } // Cecil PDB writer does not yet write the variable names. // This is not yet implemented. // TODO local variable support //CreateLocalVariable (s, startOffset, endOffset); //CreateScopes (body, s.Scopes); m_writer.CloseNamespace(); m_writer.CloseScope(endOffset); } }