Saya dulu strace
melampirkan proses sebentar. Prosesnya menciptakan 90 utas. Ketika saya menemukan utas yang menyinggung, saya harus mencari utas induk, lalu utas kakek, dan seterusnya sampai proses root.
Apakah ada trik atau alat untuk mengetahui dengan cepat utas mana yang membuat utas lain? Atau lebih baik lagi, mencetak pohon kreasi benang seperti pstree
?
linux
multithreading
strace
projectshave
sumber
sumber
Jawaban:
strace -f
untuk melacak proses anak yangfork()
diedit.sumber
Saya tidak bisa melihat cara yang mudah:
Anda dapat menggunakan
-ff
opsi dengan-o filename
untuk menghasilkan banyak file (satu per pid).misalnya:
yang akan membantu Anda melihat orang tua mana yang membuat apa. Mungkin itu akan membantu Anda - setidaknya Anda bisa mencari ke belakang.
sumber
Ada skrip perl yang disebut
strace-graph
. Ini adalah versi dari github . Ini dikemas dengan versi kompiler crosstool-ng . Ini bekerja untuk saya bahkan digunakan lintas platform.Kotak ARM Linux.
Kotak X86_64 Linux.
Keluarannya dapat digunakan untuk membantu menavigasi log jejak utama.
sumber
Untuk menangkap lalu lintas untuk satu proses, Anda dapat menggunakan
strace
, seperti yang disarankan @stackmate.atau output ke file.
-f
untuk semua proses bercabang,-s
untuk ukuran string yang akan dicetak, dan-o
untuk membuang output ke file.sumber