- - PR -
スタックトレースの吐出しファイル名
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-12-24 14:30
下記のスレッドの結論(解決方法)を知りたいのですが。
<引用スレ> Linuxのシステムでプロセスダウン時の解析ログとしてスタックトレースを 収集しようとしています。 環境変数に LD_PRELOAD=/lib/libSegFault.so SEGFAULT_OUTPUT_NAME=/root/log を設定し、プロセスダウン時に"log"というファイル名のスタックトレースログを吐 き出させるコトは出来たのですが、できればこの"log"というファイル名に、ダウン した、プロセスIDもしくは、時刻情報等を付与させたいと考えています。 環境変数への設定のやり方によって上記のようなコトが可能かどうか、どなたか ご存知な方がいらっしゃればおしえていただけないでしょうか? 宜しくお願いいたします。 |
|
投稿日時: 2008-12-24 17:34
libSegFault.soでは、getenvを用いてSEGFAULT_OUTPUT_NAMEの値を読み込んでいるだけなので、ファイル名を動的に加工することは不可能です。
ただ、 SEGFAULT_OUTPUT_NAME の設定がない場合も、 LD_PRELOAD=/lib/libSegFault.so の設定がなされていればプロセスの標準エラー出力にバックトレースが出力されるので、 リダイレクト等でトレースファイルを生成してはどうでしょうか。 |
|
投稿日時: 2008-12-25 14:22
libSegFault.soのソースを修正するという方法はどうですか。
|
|
投稿日時: 2008-12-26 10:44
takatさま progmanさま レスありがとうございます。
手元のglibc-2.5(segfault.c #install_handler() )を参照したところ ファイル名を動的に加工するためのデフォルトオプション等は存在しないという点理解しました。 標準出力のリダイレクションによるoverwrite防止のためにファイルの命名保存を起動スクリプト内で追加するか、libSegFaultを拡張(ハンドリングした場合にプロセス情報と時刻を付与)する方向で考えてみます。(世の中には同じニーズのために該当PACHが存在することも期待しつつ) ありがとうございました。 他に良い方法等ありましたら引き続きお願いします。 |
1