Eu costumava strace
anexar a um processo brevemente. O processo criou 90 threads. Quando eu encontrei o thread ofensivo, tive que procurar tediosamente pelo thread pai, depois pelo thread dos avós e assim por diante até o processo raiz.
Existe um truque ou ferramenta para descobrir rapidamente qual thread criou outro? Ou melhor ainda, imprimir a árvore de criações de fios como pstree
?
linux
multithreading
strace
projetos têm
fonte
fonte
Respostas:
strace -f
para rastrear o processo filhofork()
ed.fonte
Não consigo ver uma maneira fácil:
Você pode usar a
-ff
opção com-o filename
para produzir vários arquivos (um por pid).por exemplo:
isso ajudaria você a ver qual pai criou o quê. Talvez isso o ajude - pelo menos você poderia pesquisar para trás.
fonte
Existe um script perl chamado
strace-graph
. Aqui está uma versão do github . É empacotado com versões crosstool-ng de compiladores. Funciona para mim mesmo usando plataforma cruzada.Caixa ARM Linux.
Caixa do Linux X86_64.
A saída pode ser usada para ajudar a navegar no log de rastreamento principal.
fonte
Para capturar o tráfego para um único processo, você pode usar
strace
, como sugeriu @stackmate.ou enviá-lo para um arquivo.
-f
para todos os processos bifurcados,-s
para imprimir o tamanho da string e-o
para despejar a saída em um arquivo.fonte