protected HeapRegionBase(ulong heapBase, ColorString heapName, ulong baseAddress, ulong size, HeapTypeCache typeCache, DbgEngDebugger debugger) : base(baseAddress, size, debugger) { TypeCache = typeCache; HeapBase = new Address(heapBase, debugger.TargetIs32Bit); m_heapName = heapName ?? new ColorString("Heap ").Append(HeapBase); }
public NativeHeapSegmentRegion(ulong heapBase, ColorString heapName, PSObject heapSegment, ulong heapEncoding, HeapTypeCache typeCache, DbgEngDebugger debugger) : base(heapBase, heapName, SegmentBase(heapSegment), SegmentSize(heapSegment), typeCache, debugger) { m_heapSegment = heapSegment; m_heapEncoding = heapEncoding; }
public IEnumerable <MemoryRegionBase> IdentifyRegions(DbgEngDebugger debugger) { var dataSections = debugger.Modules.Select(m => (m, m.GetSectionHeaders().FirstOrDefault(h => h.Name == ".data"))).ToList(); var types = new HeapTypeCache(debugger); bool isDefaultHeap = true; foreach (var heapBase in AllHeaps(debugger)) { foreach (var segment in RegionsForHeap(heapBase, debugger, types, dataSections, isDefaultHeap)) { yield return(segment); } isDefaultHeap = false; } }
private static IEnumerable <MemoryRegionBase> RegionsForHeap(ulong heapBase, DbgEngDebugger debugger, HeapTypeCache types, List <(DbgModuleInfo mod, IMAGE_SECTION_HEADER dataHdr)> dataSections, bool isDefaultHeap)
public HeapEntryRegion(ulong heapBase, ColorString heapName, _HEAP_ENTRY entry, ulong baseAddress, HeapTypeCache typeCache, DbgEngDebugger debugger) : base(heapBase, heapName, baseAddress, entry.Size * 8u, typeCache, debugger) { m_entry = entry; }