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