Perl備忘録2 デバッグ

Perlデバッグについて。
簡単なデバッグであればprintやファイル出力を使う手もありますが、
幸いにもPerlには標準のデバッガが付いてます。
しかもかなり使いやすいので単一のスクリプトデバッグするには
これで十分でしょう。

使用方法

コマンドラインから。

$ perl -d hogehoge.pl

次に、絶対に押さえておきたいデバッガコマンド。

s ステップイン
n ステップオーバー
r 現在のサブルーチンをすべて実行
p 指定された式の値をprintする
x 指定された式の内容をリストコンテントで解釈し、その内容をprintする

ブレークポイント関連。

b [行番号 or サブルーチン名] ブレークポイントを設定
d [行番号] 指定された行番号のブレークポイントを削除する
D すべてのブレークポイントを削除する

使えるとうれしいコマンド。

c [行番号 or サブルーチン名] 指定された行またはサブルーチンまで処理を続ける
l 開始行 + 行数 開始行から行数分、プログラムを表示する
T スタックトレースを表示
t トレースモードのオン/オフ

CGIデバッグ

基本的には上記と同じコマンドでデバッグすることができます。

$ perl -d hogehoge.cgi

リファラやクッキーを設定したい場合は
環境変数に入れておくだけでOKです。

$ export HTTP_COOKIE='CGISESSID=hogecookie'
$ export HTTP_REFERER='http://www.google.co.jp/'

CGI.pmを使用することで、
GET/POSTパラメータも設定することが可能です。

use CGI qw/:standard -debug/;

GETパラメータの例。

$ perl -d hogehoge.cgi p=1&id=toritori&job=hetare

POSTパラメータは、デバッグ中の
new CGIの部分でパラメータの入力を促されます。

main::(hogehoge.cgi:12):     my $cgi = new CGI;
  DB<1> n
(offline mode: enter name=value pairs on standard input; press ^D or ^Z when done)
...

(参考文献)
http://homepage3.nifty.com/hippo2000/perltips/perldbg.htm
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod