Kiedyś strace
na krótko przywiązywałem się do procesu. W wyniku tego procesu powstało 90 wątków. Kiedy znalazłem problematyczny wątek, musiałem żmudnie wyszukiwać wątek nadrzędny, następnie wątek dziadka i tak dalej, aż do procesu rootowania.
Czy jest jakaś sztuczka lub narzędzie, aby szybko dowiedzieć się, który wątek utworzył inny? Albo jeszcze lepiej, wydrukuj drzewo kreacji nici jak pstree
?
linux
multithreading
strace
projectshave
źródło
źródło
Odpowiedzi:
strace -f
do śledzenia procesu potomnego, który jestfork()
wyd.źródło
Nie widzę łatwego sposobu:
Możesz użyć
-ff
opcji z-o filename
do tworzenia wielu plików (po jednym na pid).na przykład:
to pomoże ci zobaczyć, który rodzic stworzył co. Może to by ci pomogło - przynajmniej wtedy możesz szukać wstecz.
źródło
Istnieje skrypt perl o nazwie
strace-graph
. Oto wersja z github . Jest dostarczany z wersjami kompilatorów typu crosstool-ng . U mnie działa nawet na wielu platformach.ARM Linux box.
X86_64 Linux box.
Dane wyjściowe mogą pomóc w nawigacji w głównym dzienniku śledzenia.
źródło
Aby przechwycić ruch dla pojedynczego procesu, możesz użyć
strace
, jak sugerował @stackmate.lub wyślij go do pliku.
-f
dla całego rozwidlonego procesu,-s
dla rozmiaru łańcucha do wydrukowania i-o
zrzucenia wyniku do pliku.źródło