/// <summary>
        /// Starts useful services that run in the background to assist in various operations.
        /// </summary>
        private void StartBackgroundServices()
        {
            SnapshotPrefilterFactory.GetSnapshotPrefilter(typeof(ChunkLinkedListPrefilter)).BeginPrefilter();
            //// PointerCollector.GetInstance().Begin();
            DotNetObjectCollector.GetInstance().Begin();
            AddressResolver.GetInstance().Begin();

            OutputViewModel.GetInstance().Log(OutputViewModel.LogLevel.Info, "Background Services Started");
        }
Example #2
0
        /// <summary>
        /// Starts useful services that run in the background to assist in various operations.
        /// </summary>
        private void StartBackgroundServices()
        {
            DotNetObjectCollector.GetInstance().Start();
            AddressResolver.GetInstance().Start();
            AnalyticsService.GetInstance().Start();

            AnalyticsService.GetInstance().SendEvent(AnalyticsService.AnalyticsAction.General, "Start");
            OutputViewModel.GetInstance().Log(OutputViewModel.LogLevel.Info, "Background services started");
        }
Example #3
0
        /// <summary>
        /// Refreshes the list of active .Net objects based on gathered managed heap data.
        /// </summary>
        private void RefreshObjects()
        {
            IEnumerable <DotNetObject> dotNetObjects = DotNetObjectCollector.GetInstance().ObjectTrees;

            if (dotNetObjects == null)
            {
                dotNetObjects = new List <DotNetObject>();
            }

            this.DotNetObjects = new ReadOnlyCollection <DotNetObjectViewModel>(dotNetObjects.Select(x => new DotNetObjectViewModel(x)).ToList());
        }
        /// <summary>
        /// Polls the external process, gathering object information from the managed heap.
        /// </summary>
        protected override void OnUpdate()
        {
            Dictionary <String, DotNetObject> nameMap = new Dictionary <String, DotNetObject>();
            List <DotNetObject> objectTrees           = DotNetObjectCollector.GetInstance().ObjectTrees;

            // Build .NET object list
            objectTrees?.ForEach(x => this.BuildNameMap(nameMap, x));
            this.DotNetNameMap = nameMap;

            // After we have successfully grabbed information from the process, slow the update interval
            if (objectTrees != null)
            {
                this.UpdateInterval = AddressResolver.ResolveInterval;
            }
        }