internal SequencePoint(PdbLine line) : this() { this.Offset = (int)line.offset; this.Line = (int)line.lineBegin; this.Column = line.colBegin; this.EndLine = (int)line.lineEnd; this.EndColumn = line.colEnd; }
private IPrimarySourceLocation /*?*/ MapMethodBodyLocationToSourceLocation(IILLocation mbLocation, bool exact) { PdbFunction pdbFunction; var doc = mbLocation.Document as MethodBodyDocument; if (doc == null || !this.pdbFunctionMap.TryGetValue(doc.MethodToken, out pdbFunction)) { return(null); } if (pdbFunction.lines == null) { return(null); } foreach (PdbLines pdbLines in pdbFunction.lines) { PdbSource pdbSourceFile = pdbLines.file; if (pdbSourceFile == null) { return(null); } PdbLine[] array = pdbLines.lines; int minIndex = 0; int maxIndex = array.Length - 1; uint desiredOffset = mbLocation.Offset; while (minIndex <= maxIndex) { int midPointIndex = (minIndex + maxIndex) >> 1; PdbLine mid = array[midPointIndex]; if (midPointIndex == maxIndex || (mid.offset <= desiredOffset && desiredOffset < array[midPointIndex + 1].offset)) { if (exact && desiredOffset != mid.offset) { return(null); } PdbLine line = mid; PdbSourceDocument psDoc = this.GetPrimarySourceDocumentFor(pdbSourceFile); return(new PdbSourceLineLocation(psDoc, (int)line.lineBegin, line.colBegin, (int)line.lineEnd, line.colEnd)); } if (mid.offset < desiredOffset) { minIndex = midPointIndex + 1; } else { maxIndex = midPointIndex - 1; } } } return(null); }
static void ReadLine(PdbLine line, Document document, MethodDebugInformation info) { var sequence_point = new SequencePoint((int)line.offset, document); sequence_point.StartLine = (int)line.lineBegin; sequence_point.StartColumn = (int)line.colBegin; sequence_point.EndLine = (int)line.lineEnd; sequence_point.EndColumn = (int)line.colEnd; info.sequence_points.Add(sequence_point); }
public static void Dump(PdbLine s, int indent) { string pad = new String(' ', indent); if (s.line == 0xfeefee && s.colBegin == 0 && s.colEnd == 0) { Console.WriteLine(" {0}off={1:x8} #---------", pad, s.offset, s.line, s.colBegin); } else { Console.WriteLine(" {0}off={1:x8} #{2,6},{3,2}", pad, s.offset, s.line, s.colBegin); } }
static void ReadLine(PdbLine line, Document document, InstructionMapper mapper) { var instruction = mapper((int)line.offset); if (instruction == null) { return; } var sequence_point = new SequencePoint(document); sequence_point.StartLine = (int)line.lineBegin; sequence_point.StartColumn = (int)line.colBegin; sequence_point.EndLine = (int)line.lineEnd; sequence_point.EndColumn = (int)line.colEnd; instruction.SequencePoint = sequence_point; }
void ReadLines(PdbLine line, Document document, IDictionary instructions) { Instruction instruction = (Instruction)instructions [(int)line.offset]; if (instruction == null) { return; } SequencePoint point = new SequencePoint(document); point.StartLine = (int)line.lineBegin; point.StartColumn = (int)line.colBegin; point.EndLine = (int)line.lineEnd; point.EndColumn = (int)line.colEnd; instruction.SequencePoint = point; }