Aqui está o comando listando as alças selecionadas (substitua terminal.exe pelo nome do aplicativo):
$ winedbg --command "info wnd" | grep -wf <(winedbg --command "info threads" | ex +"/terminal.exe\n\zs/;,/^\S/-p" -scq! /dev/stdin | awk '{print $1}' )
Basicamente, estamos grep da lista de todos os manipuladores de janela ( info wnd ) por lista específica de threads. A lista é analisada pelo editor ex com base na saída info threads e salva em um arquivo especial ( /dev/fd ) que é carregado por grep ( -f ). O comando Awk é usado para imprimir a primeira coluna onde os ids de thread estão listados.
Explicação da sintaxe ex usada:
-
+"cmd"- executa o comando -
/terminal.exe\n\zs/;,/^\S/-p-
/pattern1/;,/pattern2/- uma pesquisa de intervalo (;coloca o cursor após o primeiro padrão) -
/terminal.exe\n\zs/- procureterminal.exee marque o ponto inicial (\zs) -
/^\S/- a seleção termina na primeira linha não em branco -
-p- imprime a seleção acima, menos uma linha (relacionado post ) -
-scq!- s forçosa e forçosamente (!) executa o q uit c ommand -
/dev/stdin- leia o conteúdo da entrada padrão
-