/// <summary> /// Creates a new FuzzController. Once the snapshotBreakpoint is reached a snapshot is created. /// The snapshot gets restored once restore Breakpoint is reached /// </summary> /// <param name="connector">connector to use</param> /// <param name="snapshotBreakpoint">Location to create a snapshot</param> /// <param name="restoreBreakpoint">Location to restore the snapshot</param> public FuzzController(ITargetConnector connector, string logDestination, IDataLogger logger, FuzzDescription fuzzDescription, IFuzzLocation[] preConditions) { _connector = connector; _snapshot = null; _dataLogger = logger; _logDestination = logDestination; _errorLog = new ErrorLog (_logDestination); _fuzzDescription = fuzzDescription; _fuzzDescription.Init (); _preConditions = preConditions; }
public FuzzController[] CreateFuzzController() { List<FuzzController> fuzzControllers = new List<FuzzController> (); foreach (FuzzDescriptionInfo info in _fuzzDescriptions) { IBreakpoint snapshot = _connector.SetSoftwareBreakpoint (info.RegionStart.ResolveAddress ().Value, 0, "snapshot"); IBreakpoint restore = _connector.SetSoftwareBreakpoint (info.RegionEnd.ResolveAddress ().Value, 0, "restore"); FuzzDescription fuzzDescription = new FuzzDescription (snapshot, restore); fuzzDescription.FuzzLocation.AddRange (info.FuzzLocations); fuzzControllers.Add (new FuzzController (_connector, _logDestination, new LoggerCollection (_loggers.ToArray ()), fuzzDescription, _preConditions.ToArray())); } return fuzzControllers.ToArray (); }