public void DumpDependencyProperties(string args) { var objAddress = ulong.Parse(args, NumberStyles.HexNumber); var depPropertiesProvider = DepPropertiesProvider.Get(objAddress, Heap); var columns = new Column[] { new Column("Type", 40), new Column("Value", 20), new Column("Name", 50) }; using (var table = new Table(Output, columns)) { foreach (var propertyInfo in depPropertiesProvider.Properties.OrderBy(p => p.Name)) { var row = table.CreateRow(); row.Add(propertyInfo.Type.Name); row.Add(GetPropValue(objAddress, propertyInfo)); row.Add(propertyInfo.Name); table.WriteRow(row); } } }
public static DepPropertiesProvider Get(ulong objAddress, ClrHeap heap) { if (_cachedProvider != null && _cachedProvider.ObjAddress == objAddress) { return(_cachedProvider); } return(_cachedProvider = new DepPropertiesProvider(objAddress, heap)); }
public void DumpDependencyProperty(string args) { var argsList = args.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (argsList.Length == 2) { var objAddress = ulong.Parse(argsList[0], NumberStyles.HexNumber); var propertyName = argsList[1]; var depPropertiesProvider = DepPropertiesProvider.Get(objAddress, Heap); var propInfo = depPropertiesProvider.GetPropertyInfo(propertyName); Output.WriteLine("Prop name:\t{0}", propInfo.Name); Output.WriteLine("Value info:"); Output.WriteLine("-----------"); Output.Execute(ExternalCommandNames.DumpObjectBySos(propInfo.Value)); } else { Output.WriteLine("Invalid arguments count. Usage:"); WriteHelp(); } }