Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }