Могу ли я использовать ClrMD для прохождения только тех объектов, которые используются процессом на переднем плане?
В настоящее время я могу получить все объекты, которые присутствуют в куче, используя приведенный ниже код, используя ClrMD. Можно ли получить только набор объектов, которые используются в целевом процессе (т. Е. Только те объекты, которые находятся в пределах исходного кода целевого процесса).
var types = heap.EnumerateObjectAddresses()
.GroupBy(obj => heap.GetObjectType(obj).Name)
.Select(group => new { Key = group.Key, Count = group.Count() })
.OrderBy(type => type.Count);
foreach (var type in types)
Console.WriteLine("{0} {1}", type.Key, type.Count);
Console.ReadLine();
1 ответ
Насколько я знаю, в профиле VS есть функция сбора всех вызывающих (объектов, функций) функции во время работы программы. это то, что вы хотите получить?
Ссылка:
Как вывести список всех вызовов функции во время выполнения?
Обновить:
CLrMD имеет классы для перечисления информации PDB. Я предлагаю вам попробовать использовать класс DataTarget для перечисления параметров / локальных элементов стекового фрейма. Для этого им придется добавить код в класс DataTarget, так как он не выглядит так, как будто в настоящее время поддерживает его.