void ResolveBreakpoints(TypeMirror t) { string typeName = t.FullName; types [typeName] = t; /* Handle pending breakpoints */ var resolved = new List <BreakEvent> (); foreach (string s in t.GetSourceFiles()) { List <TypeMirror> typesList; if (source_to_type.TryGetValue(s, out typesList)) { typesList.Add(t); } else { typesList = new List <TypeMirror> (); typesList.Add(t); source_to_type[s] = typesList; } foreach (var bp in pending_bes.OfType <Breakpoint> ()) { if (System.IO.Path.GetFileName(bp.FileName) == s) { Location l = GetLocFromType(t, s, bp.Line); if (l != null) { OnDebuggerOutput(false, string.Format("Resolved pending breakpoint at '{0}:{1}' to {2}:{3}.\n", s, bp.Line, l.Method.FullName, l.ILOffset)); ResolvePendingBreakpoint(bp, l); resolved.Add(bp); } else { OnDebuggerOutput(true, string.Format("Could not insert pending breakpoint at '{0}:{1}'. " + "Perhaps the source line does not contain any statements, or the source does not correspond " + "to the current binary.\n", s, bp.Line)); } } } foreach (var be in resolved) { pending_bes.Remove(be); } resolved.Clear(); } //handle pending catchpoints foreach (var cp in pending_bes.OfType <Catchpoint> ()) { if (cp.ExceptionName == typeName) { ResolvePendingCatchpoint(cp, t); resolved.Add(cp); } } foreach (var be in resolved) { pending_bes.Remove(be); } }