Come tenere traccia del processo figlio utilizzando strace?


104

Mi stracecollegavo brevemente a un processo. Il processo ha creato 90 thread. Quando ho trovato il thread offensivo, ho dovuto cercare noiosamente il thread padre, quindi il thread nonno e così via fino al processo di root.

Esiste un trucco o uno strumento per capire rapidamente quale thread ne ha creato un altro? O meglio ancora, stampare l'albero delle creazioni in filo come pstree?


Sembra che la risposta di @JeRog dovrebbe essere accettata.
jww

Risposte:


119

strace -fper tracciare il processo figlio che è fork()ed.


19

Non riesco a vedere un modo semplice:

È possibile utilizzare l' -ffopzione con -o filenameper produrre più file (uno per pid).

per esempio:

strace -o process_dump -ff ./executable
grep clone process_dump*

questo ti aiuterebbe a vedere quale genitore ha creato cosa. Forse questo ti aiuterebbe - almeno allora potresti cercare all'indietro.


18

C'è uno script perl chiamato strace-graph. Ecco una versione di GitHub . È fornito con le versioni crosstool-ng dei compilatori. Per me funziona anche se utilizzato su più piattaforme.

Scatola ARM Linux.

$ ./strace -f -q -s 100 -o app.trc -p 449
$ tftp -pr app.trc 172.0.0.133

Scatola Linux X86_64.

$ ./strace-graph /srv/tftp/app.trc 
 (anon)
  +-- touch /tmp/ppp.sleep
  +-- killall -HUP pppd
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 50%
  +-- amixer set Speaker 70%
  `-- amixer set Speaker 50%

L'output può essere utilizzato per facilitare la navigazione nel registro di traccia principale.


1
molto bello, questo è quasi esattamente qualcosa che volevo da almeno diversi giorni. sorprendentemente, posso anche vederlo nel mio / usr / share / doc / strace / examples /.
mykhal

0

Per catturare il traffico per un singolo processo puoi usare strace, come suggerito da @stackmate.

strace -f -e trace=network -s 10000 -p <PID>;

o l'output in un file.

strace -f -e trace=network -s 10000 -o dumpfile -p <PID>

-fper tutto il processo biforcuto, -sper la dimensione della stringa da stampare e -oper scaricare l'output in un file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.