[PREVIOUS CHAPTER] [NEXT CHAPTER]

3 デバッグの HOW-TO

    3.1	How to debug (1)

    in fml-support: 5282
    1. OSのメールのログを調べる。

    INSTALL file の Appendix A をみてみてください。

    2. fml のログを調べる。$DIR/log (ML's HOME ログファイル)

    3. fml からMTAへちゃんと渡せているかのログを調べる。
       ($DIR/var/log/_smtplog)

    4. "makefml test ML" で fml 自体が動いているかを調べる。
       このテストはMTAとは完全に無関係に動くのでこれが動くならMTAの問題

    	makefml test ML

    と打つとデバッグモードでの動作テストができます。画面に debug 情報が一
    杯出るので emacs の shell mode なり /usr/bin/script などでログをとるな
    りして見て下さい。makefml test ML を起動すると配送のテストかコマンドの
    テストか？選択をしろといわれます。

    3.2	How to debug (2)［デバッグのポイント］

    From: fml-support: 01411

    …略…

    ○ 私 printf デバッグがすきなので $debug = 1; にした時の画面に出るエラー
    情報から推測するのが多いです。

    もしくは

    ○ perl -d オプションで perl debugger を使う

    Example:

    	% ($FML/bin/emumail.pl; echo something )|perl -d $FML/fml.pl $PWD
    	....debugger starts ...
    	<1> t
    	<2> c
    	.... debug information flood! ....

    ○ どのファイルか？は目的別なのでそれっぽい名前のことが多いですが…

    	基本関数	fml.pl
    	SMTP		libsmtp.pl
    	その他		lib(それっぽい名前).pl

    	[Naming Convention Example]
    	ra  = remote administration
    	fop = file operation
    	...

    とか省略系もあるけど…

    3.3	古典の printf debug の例

    From: fukachan@phys.titech.ac.jp
    X-Mail-Count: 00702

    例えば次のような適当な printf 構文をつっこむ

    	print STDERR "REQ:GUIDE $Envelope{'req:guide'}";

    &InitConfig;			# initialize date etc..
    &Parsing;			# Phase 1(1st pass), pre-parsing here
    &GetFieldsFromHeader;		# Phase 2(2nd pass), extract headers

    のあいだにはさんで、

    	print STDERR "REQ:GUIDE $Envelope{'req:guide'}";
    &InitConfig;			# initialize date etc..
    	print STDERR "REQ:GUIDE $Envelope{'req:guide'}";
    &Parsing;			# Phase 1(1st pass), pre-parsing here
    	print STDERR "REQ:GUIDE $Envelope{'req:guide'}";
    &GetFieldsFromHeader;		# Phase 2(2nd pass), extract headers
    	print STDERR "REQ:GUIDE $Envelope{'req:guide'}";

    とかしておいて、

    % perl sbin/localtest.pl |sed 's/test/#guide/' | perl fml.pl $PWD -d

    とかして、この REQ:GUIDE の値の変化をみるというのはどうでしょう？

    ただしいばあいは &Parsing のあと １になって そのままのはずですよね

[PREVIOUS CHAPTER] [NEXT CHAPTER]