GNU/Linux >> Linux の 問題 >  >> Linux

straceを使用して子プロセスを追跡するには?

strace -f fork() の子プロセスを追跡する 編


strace-graph という perl スクリプトがあります。 .これはgithubのバージョンです。 crosstool-ng でパッケージ化されています コンパイラのバージョン。クロス プラットフォームを使用しても機能します。

ARM Linux ボックス。

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

X86_64 Linux ボックス。

$ ./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%

出力は、メインのトレース ログをナビゲートするために使用できます。


簡単な方法がわかりません:

-ff を使用できます -o filename のオプション 複数のファイル (pid ごとに 1 つ) を生成します。

例:

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

これは、どの親が何を作成したかを確認するのに役立ちます。多分それはあなたを助けるでしょう - 少なくとも、あなたは逆方向に検索することができます.


Linux
  1. コマンドを使用してLinuxでプロセスを強制終了する方法は?

  2. 親が終了した後に子プロセスを終了させる方法は?

  3. すべての子プロセスを見つける方法は?

  1. LinuxでPythonを使用してプロセスがまだ実行されているかどうかを確認するには?

  2. シェルスクリプトでフォークされた子プロセスから PID を取得する方法

  3. systemd は管理対象プロセスの子プロセスの終了をどのように処理しますか?

  1. CHILD PROCESSから戻り値を取得するには?

  2. Bashで特定のタイムアウト後に子プロセスを強制終了する方法は?

  3. 親プロセスから子プロセスを取得する方法