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