Esempio n. 1
0
        public void EnumerateObjects(out IMDObjectEnum ppEnum)
        {
            List <ulong> refs = new List <ulong>();

            for (ulong obj = m_seg.FirstObject; obj != 0; obj = m_seg.NextObject(obj))
            {
                refs.Add(obj);
            }

            ppEnum = new MDObjectEnum(refs);
        }
Esempio n. 2
0
        public void DumpAllExceptions(IMDObjectEnum Exceptions)
        {
            Dictionary <string, List <ulong> > allExceptions = new Dictionary <string, List <ulong> >();

            foreach (var obj in ((MDObjectEnum)Exceptions).List)
            {
                ClrException ex = m_heap.GetExceptionObject(obj);
                if (ex != null)
                {
                    if (IsInterrupted())
                    {
                        return;
                    }
                    string key = String.Format("{0}\0{1}\0{2}", ex.Type.Name, ex.Message, DumpStack(ex.StackTrace, m_heap.GetRuntime().PointerSize, true));
                    if (!allExceptions.ContainsKey(key))
                    {
                        allExceptions[key] = new List <ulong>();
                    }
                    allExceptions[key].Add(obj);
                }
            }

            int exCount   = 0;
            int typeCount = 0;

            foreach (var key in allExceptions.Keys)
            {
                typeCount++;
                exCount += allExceptions[key].Count;
                Write("{0,8:#,#} of Type: {1}", allExceptions[key].Count, key.Split('\0')[0]);
                for (int i = 0; i < Math.Min(3, allExceptions[key].Count); i++)
                {
                    Write(" <link cmd=\"!wpe {0:%p}\">{0:%p}</link>", (allExceptions[key])[i]);
                }
                ClrException ex = m_heap.GetExceptionObject((allExceptions[key])[0]);
                WriteLine("");
                WriteLine("Message: {0}", key.Split('\0')[1]);
                WriteLine("Inner Exception: {0}", ex.Inner == null ? "(none)" : ex.Inner.Type.Name);
                WriteLine("Stack:");
                WriteLine("{0}", key.Split('\0')[2]);
                WriteLine("");
            }
            WriteLine("{0:#,#} Exceptions in {1:#,#} unique type/stack combinations (duplicate types in similar stacks may be rethrows)", exCount, typeCount);
            WriteLine("");
        }
Esempio n. 3
0
 public void EnumerateFinalizerQueue(out IMDObjectEnum ppEnum)
 {
     ppEnum = new MDObjectEnum(new List <ulong>(m_runtime.EnumerateFinalizerQueue()));
 }
Esempio n. 4
0
 public void EnumerateFinalizerQueue(out IMDObjectEnum ppEnum)
 {
     ppEnum = new MDObjectEnum(new List<ulong>(m_runtime.EnumerateFinalizerQueue()));
 }
Esempio n. 5
0
        public void EnumerateObjects(out IMDObjectEnum ppEnum)
        {
            List<ulong> refs = new List<ulong>();
            for (ulong obj = m_seg.FirstObject; obj != 0; obj = m_seg.NextObject(obj))
                refs.Add(obj);

            ppEnum = new MDObjectEnum(refs);
        }