Ejemplo n.º 1
0
        public bool Run(SptWrapper wrapper, string args)
        {
            var threads = wrapper.GetThreads();

            TableWriter tw = wrapper.CreateTableWriter();

            tw
            .AddColumn(4)
            .AddColumn(4)
            .AddColumn(4)
            .AddPointerColumn()
            .AddColumn(8)
            .AddColumn(11, true)
            .AddPointerColumn()
            .AddPointerColumn()
            .AddPointerColumn()
            .AddColumn(5, true)
            .AddColumn(3)
            .AddColumn(-1, true);

            tw.TextColumn("").TextColumn("ID").TextColumn("OSID").TextColumn("ThreadOb").TextColumn("State")
            .TextColumn("GC Mode").TextColumn("GC Alloc").TextColumn("Context").TextColumn("Domain  ").TextColumn("Lock").TextColumn("Apt")
            .TextColumn("Exception")
            .NewRow();

            foreach (var t in threads)
            {
                tw
                .HexColumn(0)
                .HexColumn(t.CorThreadId)
                .HexColumn(t.osThreadId)
                .PointerColumn(t.ThreadAddress)
                .HexColumn(t.State)
                .TextColumn(t.PreemptiveGCDisabled == 0 ? "Preemptive" : "Cooperative")
                .PointerColumn(t.GCAllocContext)
                .PointerColumn(t.GCAllocContextLimit)
                .PointerColumn(t.domain)
                .Column("{0}", t.LockCount)
                .TextColumn("MTA")
                .TextColumn("???");

                tw.NewRow();
            }

            return(true);
        }