プロセスの動作を追跡するには、Linuxのacct(BSDプロセス統計)を使用する必要がありますか?

プロセスの動作を追跡するには、Linuxのacct(BSDプロセス統計)を使用する必要がありますか?

slapd時々何らかの理由で停止するデーモンプロセス()があります。セグフォルトは発生しません。ログには特別な内容はありません。

だから私が使用したいのは、acctプロセスのライフサイクル、特に終了値を追跡することです。manカーネルが値を記録したことを示します。驚いたことに、私のdump-acct情報は表示されません...

print_pacct_record()関数に次の行を追加してソースを変更する必要がありました。

(void)fprintf(out, "%4u|", rec->ac_exitcode >> 8);

編集:この変更は最近追加されたアルコール

しかし、これだけでは問題を見つけるには足りないと思います。

プログラムの終了方法を追跡するより良い方法はありますか?たとえば、スタックトレースは興味深いでしょう。 「最後の瞬間トラッキング」が良いでしょう。

strace私はどちらかを考えましたが、ltraceプログラムは「自己停止」する前に数日間実行することができます。パフォーマンスに影響を与える「トラッキング」が心配です。私が助けることができるかもしれませんgdb

答え1

straceそのオプションを使用して出力をファイルにリダイレクトするとどうなりますか-o

[root@host ~]# strace -o /root/slapd_strace.log slapd --parameters --you --want

答え2

straceまたは以下でscreen実行してみてくださいtmux。実行した後は、切断して必要なときにのみ再接続できます。ページの上部にスクロールする重要な手がかりを心配する必要さえないように、screenスクロールバッファを維持します(おそらくそうです)。tmux

screen -h 1000
strace ...
# disconnect with Ctrl-a d

〜の後

screen -r

関連情報