public bool Run(SptWrapper wrapper, string args) { ulong addr = wrapper.GetExpression(args); ClrMethodDescData mdd; uint n = 0; wrapper.Dac.GetMethodDescData(addr, 0, out mdd, 0, null, out n); ClrMethodTableData mtd = wrapper.Dac.GetMethodTableData(mdd.MethodTable); string methodName = wrapper.GetMethodDescName(addr); var tr = wrapper.CreateTableWriter(); tr.AddColumn(17, true); tr.AddColumn(-1); tr.TextColumn("Method Name:").TextColumn(methodName.ToString()).NewRow() .TextColumn("Class:").PointerColumn(mtd.EEClass).NewRow() .TextColumn("MethodTable:").PointerColumn(mdd.MethodTable).NewRow() .TextColumn("mdToken:").Column("0x{0:x8}", mdd.mdToken).NewRow() .TextColumn("Module:").PointerColumn(mdd.Module).NewRow() .TextColumn("IsJitted:").TextColumn(mdd.IsJitted != 0 ? "yes" : "no").NewRow() .TextColumn("CodeAddr:").PointerColumn(mdd.CodeAddr).NewRow() .TextColumn("Transparency:").TextColumn(GetTransparency(wrapper, addr)).NewRow(); return true; }
public bool Run(SptWrapper wrapper, string args) { ulong addr = wrapper.GetExpression(args); ClrMethodDescData mdd; uint n = 0; wrapper.Dac.GetMethodDescData(addr, 0, out mdd, 0, null, out n); ClrMethodTableData mtd = wrapper.Dac.GetMethodTableData(mdd.MethodTable); string methodName = wrapper.GetMethodDescName(addr); var tr = wrapper.CreateTableWriter(); tr.AddColumn(17, true); tr.AddColumn(-1); tr.TextColumn("Method Name:").TextColumn(methodName.ToString()).NewRow() .TextColumn("Class:").PointerColumn(mtd.EEClass).NewRow() .TextColumn("MethodTable:").PointerColumn(mdd.MethodTable).NewRow() .TextColumn("mdToken:").Column("0x{0:x8}", mdd.mdToken).NewRow() .TextColumn("Module:").PointerColumn(mdd.Module).NewRow() .TextColumn("IsJitted:").TextColumn(mdd.IsJitted != 0 ? "yes" : "no").NewRow() .TextColumn("CodeAddr:").PointerColumn(mdd.CodeAddr).NewRow() .TextColumn("Transparency:").TextColumn(GetTransparency(wrapper, addr)).NewRow(); return(true); }
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); }
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; }