Example #1
0
        public void HeapCachedEnumerationMatches()
        {
            // Simply test that we can enumerate the heap.
            using (DataTarget dt = TestTargets.Types.LoadFullDump())
            {
                ClrRuntime runtime = dt.ClrVersions.Single().CreateRuntime();
                ClrHeap    heap    = runtime.Heap;

                List <ClrObject> expectedList = new List <ClrObject>(heap.EnumerateObjects());

                heap.CacheHeap(CancellationToken.None);
                Assert.True(heap.IsHeapCached);
                List <ClrObject> actualList = new List <ClrObject>(heap.EnumerateObjects());

                Assert.True(actualList.Count > 0);
                Assert.Equal(expectedList.Count, actualList.Count);

                for (int i = 0; i < actualList.Count; i++)
                {
                    ClrObject expected = expectedList[i];
                    ClrObject actual   = actualList[i];

                    Assert.True(expected == actual);
                    Assert.Equal(expected, actual);
                }
            }
        }
Example #2
0
 /// <summary>
 ///     Caches all relevant heap information into memory so future heap operations run faster and
 ///     do not require touching the debuggee.
 /// </summary>
 /// <param name="cancelToken">A cancellation token to stop caching the heap.</param>
 /// <inheritdoc />
 public void CacheHeap(CancellationToken cancelToken) => Heap.CacheHeap(cancelToken);