private static ClrModel BuildClrModel(ClrInfo clrInfo) { var runtime = clrInfo.CreateRuntime(); var clrModel = new ClrModel { Version = CreateVersion(clrInfo), PointerSize = runtime.PointerSize, ServerGC = runtime.ServerGC, HeapCount = runtime.HeapCount, DacLocation = runtime.ClrInfo.LocalMatchingDac, //ClrObjects = BuildClrObjects(runtime), RootRefs = BuildRootRefs(runtime), }; //PrintAppDomains(runtime, sw); //PrintModules(runtime, sw); //PrintThreadS(runtime, sw); //PrintSegments(runtime, sw); //PrintGCHandles(runtime, sw); //PrintHeapSegments(runtime, sw); //PrintLogicHeapBalance(runtime, sw); //PrintManagedObjectsBySegment(runtime, sw); //PrintManagedObjects(runtime, sw); return(clrModel); }
internal ProcessModel Collect() { var processModel = new ProcessModel(); using (DataTarget dataTarget = DataTarget.AttachToProcess(processId, 500, AttachFlag.NonInvasive)) { foreach (ClrInfo clrInfo in dataTarget.ClrVersions) { ClrModel clrModel = BuildClrModel(clrInfo); processModel.AddClrModel(clrModel); } } return(processModel); }