[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 のあと 1になって そのままのはずですよね


[PREVIOUS CHAPTER] [NEXT CHAPTER]