void DrawSourceFileEntry(SourceFileEntry entry, float labelWidth, float indentWidth, bool isChild = false) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(indentWidth); var label = new GUIContent(entry.FileName, entry.Path); EditorGUILayout.LabelField(label, GUILayout.Width(labelWidth)); if (FileAndFolderEntryFactory.Exists(entry.Path)) { GUILayout.Space(SQUARE_BUTTON_SPACE_WIDTH); } else { Style.WarningIcon("File is missing"); } if (isChild) { GUILayout.Space(ENUM_POPUP_WIDTH); } else { EditorGUILayout.LabelField(entry.Add.ToString(), GUILayout.Width(ENUM_POPUP_WIDTH)); } EditorGUILayout.LabelField(entry.CompilerFlags); EditorGUILayout.EndHorizontal(); GUILayout.Space(2); }
public void PrintCompileUnits() { Message("Reading {0}, version {1}.{2}.", File.FileName, File.MajorVersion, File.MinorVersion); for (int i = 0; i < File.CompileUnitCount; i++) { if (CompileUnits.Count > 0) { if (!CompileUnits.ContainsKey(i + 1)) { continue; } } CompileUnitEntry unit = File.GetCompileUnit(i + 1); SourceFileEntry file = unit.SourceFile; Message("Compile unit {0}: ({1}) {2}", unit.Index, file.Index, file.FileName); foreach (SourceFileEntry include in unit.IncludeFiles) { Message(" Include: ({0}) {1}", include.Index, include.FileName); } } }
public static void MarkSequencePoint(ILGenerator ig, Location loc) { if (symwriter != null) { SourceFileEntry file = loc.SourceFile.SourceFileEntry; int offset = GetILOffset(ig); symwriter.MarkSequencePoint(offset, file, loc.Row, loc.Column, false); } }
protected void ReadSourceFiles() { for (int i = 0; i < File.SourceCount; i++) { SourceFileEntry source = File.GetSourceFile(i + 1); if (source == null) { throw new MonoSymbolFileException("Cannot get source file {0}.", i + 1); } Debug(" [{0}] - {1}", source, source.FileName); } Debug("Checked {0} source files.", File.SourceCount); }
Document GetDocument(SourceFileEntry file) { Document doc = m_documents [file.FileName] as Document; if (doc != null) { return(doc); } doc = new Document(file.FileName); m_documents [file.FileName] = doc; return(doc); }
public SourceFileEntry CreateSymbolInfo(MonoSymbolFile symwriter, List <KeyValuePair <string, string> > pathMap) { if (hidden_lines != null) { hidden_lines.Sort(); } file = new SourceFileEntry(symwriter, GetFullPathName(pathMap), OriginalFullPathName, algGuid, checksum); if (AutoGenerated) { file.SetAutoGenerated(); } return(file); }
public SourceFileEntry CreateSymbolInfo(MonoSymbolFile symwriter) { if (hidden_lines != null) { hidden_lines.Sort(); } file = new SourceFileEntry(symwriter, FullPathName, algGuid, checksum); if (AutoGenerated) { file.SetAutoGenerated(); } return(file); }
public virtual void DefineSymbolInfo(MonoSymbolWriter symwriter) { if (guid != null) { file = symwriter.DefineDocument(FullPathName, guid, checksum); } else { file = symwriter.DefineDocument(FullPathName); if (AutoGenerated) { file.SetAutoGenerated(); } } }
Document GetDocument(SourceFileEntry file) { var file_name = file.FileName; Document document; if (documents.TryGetValue(file_name, out document)) { return(document); } document = new Document(file_name); documents.Add(file_name, document); return(document); }
SourceFile GetSourceFile(Document document) { string url = document.Url; SourceFile file = m_documents [url] as SourceFile; if (file != null) { return(file); } SourceFileEntry entry = m_writer.DefineDocument(url); CompileUnitEntry comp_unit = m_writer.DefineCompilationUnit(entry); file = new SourceFile(comp_unit, entry); m_documents [url] = file; return(file); }
private Document GetDocument(SourceFileEntry file) { string file_name = file.FileName; Document document; Document result; if (this.documents.TryGetValue(file_name, out document)) { result = document; } else { document = new Document(file_name); this.documents.Add(file_name, document); result = document; } return(result); }
protected void CheckCompileUnit(CompileUnitEntry unit) { SourceFileEntry file = unit.SourceFile; SourceFileEntry file2 = File.GetSourceFile(file.Index); if ((file2 == null) || (file != file2)) { throw new MonoSymbolFileException( "Invalid source file reference in compile unit {0}.", unit.Index); } Debug(" Compile unit {0}: {1} {2} {3}", unit.Index, file, file2, file == file2); if (unit.Namespaces == null) { throw new MonoSymbolFileException( "Invalid name space table in compile unit {0}.", unit.Index); } }
public SourceFileEntry CreateSymbolInfo(MonoSymbolWriter symwriter) { if (hidden_lines != null) { hidden_lines.Sort(); } if (guid != null) { file = symwriter.DefineDocument(FullPathName, guid, checksum); } else { file = symwriter.DefineDocument(FullPathName); if (AutoGenerated) { file.SetAutoGenerated(); } } return(file); }
public int AddSource(SourceFileEntry source) { sources.Add (source); return sources.Count; }
public SourceFile(CompileUnitEntry comp_unit, SourceFileEntry entry) { this.comp_unit = comp_unit; this.entry = entry; }
public SourceFileEntry DefineDocument(string url) { SourceFileEntry entry = new SourceFileEntry (file, url); sources.Add (entry); return entry; }
public SourceFileEntry DefineDocument(string url, byte[] guid, byte[] checksum) { SourceFileEntry entry = new SourceFileEntry (file, url, guid, checksum); sources.Add (entry); return entry; }
public void MarkSequencePoint(int offset, SourceFileEntry file, int line, int column, bool is_hidden) { if (current_method == null) return; current_method.MarkSequencePoint (offset, file, line, column, is_hidden); }
public void BeginSourceFile(string filename) { SourceFileEntry file = DefineDocument(filename, null, null); current_source = DefineCompilationUnit(file); }
public void MarkSequencePoint(int offset, SourceFileEntry file, int line, int column, bool is_hidden) { MarkSequencePoint (offset, file, line, column, -1, -1, is_hidden); }
public void MarkSequencePoint(int offset, SourceFileEntry file, int line, int column, int end_line, int end_column, bool is_hidden) { int file_idx = file != null ? file.Index : 0; var lne = new LineNumberEntry (file_idx, line, column, end_line, end_column, offset, is_hidden); if (method_lines.Count > 0) { var prev = method_lines[method_lines.Count - 1]; // // Same offset cannot be used for multiple lines // if (prev.Offset == offset) { // // Use the new location because debugger will adjust // the breakpoint to next line with sequence point // if (LineNumberEntry.LocationComparer.Default.Compare (lne, prev) > 0) method_lines[method_lines.Count - 1] = lne; return; } } method_lines.Add (lne); }
public CompileUnitEntry DefineCompilationUnit(SourceFileEntry source) { CompileUnitEntry entry = new CompileUnitEntry (file, source); comp_units.Add (entry); return entry; }
Document GetDocument(SourceFileEntry file) { var file_name = file.FileName; Document document; if (documents.TryGetValue (file_name, out document)) return document; document = new Document (file_name); documents.Add (file_name, document); return document; }
public void PrintLineNumberTables() { Message("Reading {0}, version {1}.{2}.", File.FileName, File.MajorVersion, File.MinorVersion); for (int i = 0; i < File.MethodCount; i++) { if (LineNumberTables.Count > 0) { if (!LineNumberTables.ContainsKey(i + 1)) { continue; } } MethodEntry method = File.GetMethod(i + 1); if (method == null) { throw new MonoSymbolFileException("Cannot get method {0}.", i + 1); } Cecil.MethodDefinition mdef = (Cecil.MethodDefinition)Assembly.MainModule.LookupToken( new Cecil.MetadataToken(Cecil.TokenType.Method, method.Token & 0xffffff)); if ((mdef == null) || (mdef.Body == null)) { throw new MonoSymbolFileException("Method {0} (token {1:x}) not found in assembly.", method.Index, method.Token); } string name = String.Format("{0} ({1})", method.Index, GetMethodName(mdef)); Message("Method {0} - {1}", method.Index, GetMethodName(mdef)); LineNumberTable lnt = method.GetLineNumberTable(); if (lnt == null) { throw new MonoSymbolFileException("Cannot get LNT from method {0}.", name); } if (lnt.LineNumbers == null) { throw new MonoSymbolFileException("Cannot get LNT from method {0}.", name); } Dictionary <int, bool> seen_files = new Dictionary <int, bool> (); LineNumberEntry start, end; if (lnt.GetMethodBounds(out start, out end)) { Message(" Bounds: {0} {1}", start, end); } foreach (LineNumberEntry line in lnt.LineNumbers) { if (!line.IsHidden && !seen_files.ContainsKey(line.File)) { SourceFileEntry file = File.GetSourceFile(line.File); Message(" File {0}{2}: {1}", file.Index, file.FileName, file.AutoGenerated ? " (auto-generated)" : ""); seen_files.Add(line.File, true); } string range = ""; if (line.SourceRange != null) { SourceRangeEntry sre = (SourceRangeEntry)line.SourceRange; range = String.Format(" - {0} {1} {2} {3}", sre.StartLine, sre.EndLine, sre.StartColumn, sre.EndColumn); } Message(" Line {0}:{1}:{2:x}{3}{4}", line.File, line.Row, line.Offset, line.IsHidden ? " (hidden)" : "", range); } } }
public SourceFileEntry GetSourceFile(int index) { if ((index < 1) || (index > ot.SourceCount)) throw new ArgumentException (); if (reader == null) throw new InvalidOperationException (); lock (this) { SourceFileEntry source; if (source_file_hash.TryGetValue (index, out source)) return source; long old_pos = reader.BaseStream.Position; reader.BaseStream.Position = ot.SourceTableOffset + SourceFileEntry.Size * (index - 1); source = new SourceFileEntry (this, reader); source_file_hash.Add (index, source); reader.BaseStream.Position = old_pos; return source; } }