public HeapReconstructor(DataSource aDataSource, Options aOptions, DbgEngine aDebugEngine) { iRelationshipInspector = new RelationshipInspector(iData, iStatistics); iRelationshipInspector.iObserver += new AsyncReaderBase.Observer(RelationshipInspector_Observer); // iExtractor = new RHeapExtractor(aDataSource, aOptions, aDebugEngine, iRelationshipInspector, iStatistics, iData); iExtractor.iObserver += new AsyncReaderBase.Observer(Extractor_Observer); iExtractor.iExceptionHandler += new AsyncReaderBase.ExceptionHandler(Extractor_ExceptionHandler); }
public RHeapExtractor(DataSource aDataSource, Options aOptions, DbgEngine aDebugEngine, RelationshipInspector aRelationshipInspector, HeapStatistics aStatistics, HeapCellArray aData) { iData = aData; iOptions = aOptions; iStatistics = aStatistics; iDataSource = aDataSource; iDebugEngine = aDebugEngine; iState = new ExtractionState(aDataSource); iRelationshipInspector = aRelationshipInspector; // HeapCell.AllocatedCellHeaderSize = AllocatedCellHeaderSize; // Must prime these iState.NextFreeCellAddress = aDataSource.MetaData.Heap.InfoFree.FreeCellAddress; iState.NextFreeCellLength = aDataSource.MetaData.Heap.InfoFree.FreeCellLength; // if (iState.NextFreeCellAddress == 0) { throw new ArgumentException("Next free cell information invalid"); } //iState.DebugEnabled = true; }