Как определить, какие потоки .NET переднего плана от WinDBG? - PullRequest
5 голосов
/ 28 апреля 2009

Как определить, какие потоки .NET переднего плана от WinDBG? Используя команду! Threads, расширение SOS сообщает нам количество потоков переднего плана, но не какие из них.

Ответы [ 3 ]

5 голосов
/ 28 апреля 2009

Вы можете использовать значения состояния потока, указанные в этой ссылке , и узнать, является ли поток фоновым потоком или нет.

TS_Background 0x00000200 Тема является фоновая нить

5 голосов
/ 28 апреля 2009

Флаг состояния в выводе !threads содержит много информации. Если установлен флаг 0x00000200, поток является фоновым потоком.

В SOS для .NET 4 и PSSCOR2 есть команда !threadstate, которая выведет список текстов для данного значения флага. Если у вас этого нет, есть обзор флагов в исходном коде ротора и в Отладке приложений .NET 2.0 Джона Роббинса.

0 голосов
/ 30 июля 2015
Команда

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
...