WinDbg / SOS:如何将来自!threads命令的托管线程与System.Threading.Thread实例相关联

时间:2011-01-06 15:32:12

标签: .net windbg sos

使用WinDbg和SOS,我有以下内容:

0:011> !threads
ThreadCount: 7
UnstartedThread: 0
BackgroundThread: 4
PendingThread: 0
DeadThread: 2
                             PreEmptive   GC Alloc               Lock     
       ID ThreadOBJ    State     GC       Context       Domain   Count APT Exception
  0   618 0015b350        20 Enabled  00000000:00000000 0017b720     0 Ukn
  2   624 0016f508      b220 Enabled  00000000:00000000 0017b720     0 MTA (Finalizer)
  9   e48 001c13d0      1220 Enabled  00000000:00000000 0017b720     0 Ukn
 10   e8c 048c6a40   1800220 Enabled  00c296a8:00c2ab44 0017b720     0 MTA (Threadpool Worker) System.NullReferenceException
XXX     0 00224138      1820 Enabled  00000000:00000000 0017b720     0 MTA
XXX     0 001d5b50      1820 Enabled  00000000:00000000 0017b720     0 Ukn
 11   564 00166318   1800220 Enabled  00c2cf30:00c2eb44 0017b720     0 MTA (Threadpool Worker)
0:011> !dumpheap -type System.Threading.Thread
 Address       MT     Size
00b16478 79bba7a4       60
00b41a7c 79bca7ac       28
00b41a98 79bba7a4       60
00b41ecc 79bba7a4       60
00bf1e20 79bca7ac       28
00bf1e3c 79bba7a4       60
00c03b34 79bca7ac       28
00c03b50 79bba7a4       60
total 8 objects
Statistics:
      MT    Count TotalSize Class Name
79bca7ac        3        84 System.Threading.ThreadStart
79bba7a4        5       300 System.Threading.Thread
Total 8 objects

我的问题是:如何确定堆上的System.Threading.Thread的哪些实例对应于实际执行的哪个托管线程。

更新: 这是调试.NET 1.1应用程序。 在这个版本中,我从!DumpObj

获得这样的输出
0:000> !dumpobj 00b16478 
Name: System.Threading.Thread
MethodTable 0x79bba7a4
EEClass 0x79bba9d4
Size 60(0x3c) bytes
mdToken: 020000ec  (c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll)
FieldDesc*: 79bbaa38
      MT    Field   Offset                 Type       Attr    Value Name
79bba7a4  4000337        4                CLASS   instance 00000000 m_Context
79bba7a4  4000338        8                CLASS   instance 00000000 m_LogicalCallContext
79bba7a4  4000339        c                CLASS   instance 00000000 m_IllogicalCallContext
79bba7a4  400033a       10                CLASS   instance 00000000 m_Name
79bba7a4  400033b       14                CLASS   instance 00000000 m_ExceptionStateInfo
79bba7a4  400033c       18                CLASS   instance 00000000 m_Delegate
79bba7a4  400033d       1c                CLASS   instance 00000000 m_PrincipalSlot
79bba7a4  400033e       20                CLASS   instance 00000000 m_ThreadStaticsBuckets
79bba7a4  400033f       24                CLASS   instance 00000000 m_ThreadStaticsBits
79bba7a4  4000340       28                CLASS   instance 00000000 m_CurrentCulture
79bba7a4  4000341       2c                CLASS   instance 00000000 m_CurrentUICulture
79bba7a4  4000342       30         System.Int32   instance        2 m_Priority
79bba7a4  4000343       34         System.Int32   instance  1422160 DONT_USE_InternalThread
79bba7a4  4000344        0                CLASS     shared   static m_LocalDataStoreMgr
    >> Domain:Value 0017b720:00b162e8 <<

2 个答案:

答案 0 :(得分:9)

答案 1 :(得分:3)