どの行が実行されているかを見る(実行トレース)

Net::MSN - metacpan.orgを使ってごにょごにょしようとしたら、途中でSegmentation faultを起こしてログインすらできなかった。perl自体が落ちてしまうし、perl -dも固まってしまう始末。
そこでとりあえずどのモジュールが悪いのか調べたく、トレースを見ることにした。"trace"でCPANを検索。色々試した結果、Devel::Trace - Print out each line before it is executed (like sh -x) - metacpan.orgがBest Practiceのよう。
早速デバッグ

$ cpan Devel::Trace
$ perl -d:Trace MSN.pl
(略)
>> /usr/lib/perl5/site_perl/5.8/cygwin/Crypt/SSLeay/MainContext.pm:8: require Crypt::SSLeay::CTX;
>> /usr/lib/perl5/site_perl/5.8/cygwin/Crypt/SSLeay/CTX.pm:2: require Crypt::SSLeay;
>> /usr/lib/perl5/site_perl/5.8/cygwin/Crypt/SSLeay/CTX.pm:3: 1;
>> /usr/lib/perl5/site_perl/5.8/cygwin/Crypt/SSLeay/MainContext.pm:17: my $ctx = &main_ctx();
>> /usr/lib/perl5/site_perl/5.8/cygwin/Crypt/SSLeay/MainContext.pm:20:     my $ssl_version = shift || 23;
>> /usr/lib/perl5/site_perl/5.8/cygwin/Crypt/SSLeay/MainContext.pm:22:     my $ctx = Crypt::SSLeay::CTX->new($ssl_version);
Segmentation fault (core dumped)

というわけで、Crypt::SSLeayがダメな模様。
確認。

$ perl -MCrypt::SSLeay -e 'my $ctx = Crypt::SSLeay::CTX->new(23);'
Segmentation fault (core dumped)

さて、これで悪いところは分かったのでデバッグの続きができそうだ。
Devel::Traceいいよいいよー