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

如何确定哪些是来自WinDBG的前台.NET线程?,windbg,Windbg,如何确定哪些是来自WinDBG的前台.NET线程? 使用!threads命令SOS扩展告诉我们前台线程的计数,但不告诉我们哪些线程。状态标志在中!线程输出包含大量信息。如果设置了0x00000200标志,则线程为后台线程 在.NET4和PSSCOR2的SOS中,有一个!threadstate命令,该命令将列出给定标志值的文本。如果您还没有,这里将概述rotor源代码和John Robbins调试.NET 2.0应用程序中的标志 您可以使用本文中给出的线程状态值,找出某个线程是否为后台线程 TS_

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

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


在.NET4和PSSCOR2的SOS中,有一个
!threadstate
命令,该命令将列出给定标志值的文本。如果您还没有,这里将概述rotor源代码和John Robbins调试.NET 2.0应用程序中的标志

您可以使用本文中给出的线程状态值,找出某个线程是否为后台线程

TS_后台0x00000200线程是一个 背景线程

的命令
!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

谢谢!很高兴看到SOS扩展中的所有线程状态标志。