- PR -

スタックトレースの吐出しファイル名

1
投稿者投稿内容
miyazaq
会議室デビュー日: 2008/12/24
投稿数: 2
投稿日時: 2008-12-24 14:30
下記のスレッドの結論(解決方法)を知りたいのですが。

<引用スレ>
Linuxのシステムでプロセスダウン時の解析ログとしてスタックトレースを
収集しようとしています。
環境変数に
LD_PRELOAD=/lib/libSegFault.so
SEGFAULT_OUTPUT_NAME=/root/log
を設定し、プロセスダウン時に"log"というファイル名のスタックトレースログを吐
き出させるコトは出来たのですが、できればこの"log"というファイル名に、ダウン
した、プロセスIDもしくは、時刻情報等を付与させたいと考えています。
環境変数への設定のやり方によって上記のようなコトが可能かどうか、どなたか
ご存知な方がいらっしゃればおしえていただけないでしょうか?
宜しくお願いいたします。

takat
会議室デビュー日: 2008/10/28
投稿数: 10
投稿日時: 2008-12-24 17:34
libSegFault.soでは、getenvを用いてSEGFAULT_OUTPUT_NAMEの値を読み込んでいるだけなので、ファイル名を動的に加工することは不可能です。

ただ、
SEGFAULT_OUTPUT_NAME の設定がない場合も、
LD_PRELOAD=/lib/libSegFault.so
の設定がなされていればプロセスの標準エラー出力にバックトレースが出力されるので、
リダイレクト等でトレースファイルを生成してはどうでしょうか。
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2008-12-25 14:22
libSegFault.soのソースを修正するという方法はどうですか。
miyazaq
会議室デビュー日: 2008/12/24
投稿数: 2
投稿日時: 2008-12-26 10:44
takatさま progmanさま レスありがとうございます。
手元のglibc-2.5(segfault.c #install_handler() )を参照したところ
ファイル名を動的に加工するためのデフォルトオプション等は存在しないという点理解しました。
標準出力のリダイレクションによるoverwrite防止のためにファイルの命名保存を起動スクリプト内で追加するか、libSegFaultを拡張(ハンドリングした場合にプロセス情報と時刻を付与)する方向で考えてみます。(世の中には同じニーズのために該当PACHが存在することも期待しつつ)

ありがとうございました。
他に良い方法等ありましたら引き続きお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)