internal override void MethodLoaded(TargetAccess target, Method method) { TargetAddress address; if (Line != -1) { if (method.HasLineNumbers) { address = method.LineNumberTable.Lookup(Line, Column); } else { address = TargetAddress.Null; } } else if (method.HasMethodBounds) { address = method.MethodStartAddress; } else { address = method.StartAddress; } if (address.IsNull) { return; } try { target.InsertBreakpoint(this, address, method.Domain); } catch (TargetException ex) { Report.Error("Can't insert breakpoint {0} at {1}: {2}", Breakpoint.Index, address, ex.Message); } }
internal abstract void MethodLoaded (TargetAccess target, Method method);
void method_from_jit_info(TargetAccess target, TargetAddress data, MethodLoadedHandler handler) { int size = target.ReadInteger (data); TargetReader reader = new TargetReader (target.ReadMemory (data, size)); reader.BinaryReader.ReadInt32 (); int count = reader.BinaryReader.ReadInt32 (); for (int i = 0; i < count; i++) { TargetAddress address = reader.ReadAddress (); Method method = read_range_entry (target, address); handler (target, method); } }
internal void RegisterMethodLoadHandler(TargetAccess target, TargetAddress info, int index, MethodLoadedHandler handler) { if (!info.IsNull) method_from_jit_info (target, info, handler); else method_load_handlers.Add (index, handler); }
internal override void MethodLoaded(TargetAccess target, Method method) { TargetAddress address; if (Line != -1) { if (method.HasLineNumbers) address = method.LineNumberTable.Lookup (Line, Column); else address = TargetAddress.Null; } else if (method.HasMethodBounds) address = method.MethodStartAddress; else address = method.StartAddress; if (address.IsNull) return; try { target.InsertBreakpoint (this, address, method.Domain); } catch (TargetException ex) { Report.Error ("Can't insert breakpoint {0} at {1}: {2}", Breakpoint.Index, address, ex.Message); } }