如何确定哪些是来自WinDBG的前台.NET线程?

时间:2009-04-28 11:22:38

标签: windbg

如何确定哪些是来自WinDBG的前台.NET线程? 使用!threads命令,SOS扩展告诉我们前台线程的数量但不是哪些。

3 个答案:

答案 0 :(得分:5)

!threads输出中的状态标志包含大量信息。如果设置了0x00000200标志,则线程是后台线程。

在SOS for .NET 4和PSSCOR2中,有一个!threadstate命令,它将列出给定标志值的文本。如果你没有这个,那么概述转子源代码中的标志以及John Robbins在Debugging .NET 2.0应用程序中的标志。

答案 1 :(得分:5)

您可以使用此link中给出的线程状态值,并查明某个线程是否是后台线程。

  

TS_Background 0x00000200线程是一个   后台线程

答案 2 :(得分:0)

Netext的命令!wthreads显示类型和状态信息:

0:011> !wthreads
   Id OSId Address  Domain   Alloc Start:End   COM  GC Type  Locks Type / Status             Last Exception
    1 1854 0074f580 00748cd0 02c19308:02c1b2e8 STA  Preemptive   0                          
    2 1890 0075ab18 00748cd0 00000000:00000000 MTA  Preemptive   0 Background|Finalizer     
    3 1bac 080ecb98 00748cd0 00000000:00000000 MTA  Preemptive   0 Background|Worker        
    4 ---- 08106068 00748cd0 00000000:00000000 MTA  Preemptive   0 Worker|Terminated        
    5 ---- 0810e988 00748cd0 00000000:00000000 MTA  Preemptive   0 Worker|Terminated        
    6 ---- 080eb1d0 00748cd0 00000000:00000000 MTA  Preemptive   0 Worker|Terminated        
    7 081c 080fcb48 00748cd0 00000000:00000000 MTA  Preemptive   0 Background|IOCPort