Windbg: Как показать детали потока внутри команды выполнения потока? - PullRequest
1 голос
/ 29 мая 2020

В Windbg я пытаюсь запустить набор команд для всех потоков с помощью ~*e, и я хочу, чтобы первая команда показывала те же сведения, что и ~.

Я попытался ~*e .echo DETAILS:; ~. но он дает мне следующий результат:

DETAILS:
Ignoring recursive thread command
DETAILS:
Ignoring recursive thread command
DETAILS:
...

Да, я уже знаю о ~*, но я хочу показывать настраиваемую информацию с каждым потоком, и мне нужно, чтобы это работало внутри ~*e

1 Ответ

2 голосов
/ 30 мая 2020

, если вам нужен только идентификатор потока, используйте псевдорегистр @ $ thread вместо ~.

0:035> ~*e .printf "DETAILS:%I64x\n" , @$thread
DETAILS:d54d765000
DETAILS:d54d767000
DETAILS:d54d769000
DETAILS:d54d76b000

или напишите сценарий, который использует @ $ thread

0: 035>

 ~*e .printf "%-4x:%-4x TEB:%I64x\n" , @@c++(@$thread->ClientId.UniqueProcess), @@c++(@$thread->ClientId.UniqueThread),@@c++(@$thread->NtTib.Self)
eec :18f8 TEB:d54d765000
eec :f98  TEB:d54d767000
eec :25c4 TEB:d54d769000
eec :2f10 TEB:d54d76b000
eec :1edc TEB:d54d76d000
eec :26a4 TEB:d54d771000
eec :1934 TEB:d54d773000
eec :26fc TEB:d54d775000
eec :2dcc TEB:d54d777000
eec :c50  TEB:d54d779000
eec :5b4  TEB:d54d77d000
...