PERLDEBUG(1)             USER COMMANDS               PERLDEBUG(1)



NAME
     perldebug - Perl のデバッグ

DESCRIPTION
     まず最初に、一言「もう -w スイッチはお使いになりましたか。」

     デバッグ

     Perl を -d スイッチを付けて起動すれば、スクリプトはデバッガ
     上で実行されることになります。 しかし、Perl デバッガは C で
     の環境の様に独立したプログラムではありません。 その代わりに、
     -d フラグによって、コンパイラがインタプリタに渡す擬似コード
     にソース情報を埋め込むようにしています。 (これは、ソースが
     デバッガ上で動作できるためには、正常にコンパイルできないとい
     けないということです。) それからインタプリタが起動され、デ
     バッガ自身を含む Perl ライブラリをロードします。 プログラム
     は、最初の実行文の直前で停止し (ただし、以下を参照)、以下に
     示す、いずれかのコマンドが入力されるのを待ちます:

     h           ヘルプメッセージの表示。

     T           スタックトレース。 サブルーティン内で @_ 引数に
                 おかしなことをしている場合には、スタックのバック
                 トレースで元の値が示されるとは限りません。

     s           シングルステップ実行。 別の実行文の先頭に到達す
                 るまで実行します。

     n           ネクスト。 次の実行文の先頭に到達するまで、サブ
                 ルーティンにまたがって実行します。

     f           フィニッシュ。 現在のサブルーティンを終えるまで
                 実行します。

     c           コンティニュー。 次のブレイクポイントに到達する
                 まで実行します。

     c line      指定行までのコンティニュー。 1 度きりのブレイク
                 ポイントを指定した行に設定する。

     <CR>        最後の n または s をリピートする。

     l min+incr  min から incr+1 行をリスト表示する。 min を省略
                 すると、最後に実行したリスト表示の終了か所から開
                 始します。 incr を省略すると前回の incr が使わ
                 れます。

     l min-max   指定した範囲をリスト表示する。

     l line      指定行をリスト表示する。

     l           次の 1 ウィンドウをリスト表示する。



Perl manpages Last change: Release 5.0 Patchlevel 00            1






PERLDEBUG(1)             USER COMMANDS               PERLDEBUG(1)




     -           前の 1 ウィンドウをリスト表示する。

     w line      指定行付近のウィンドウ (数行以上のコード) をリス
                 ト表示する。

     l subname   サブルーティンのリスト表示。 長いサブルーティン
                 の場合には最初の部分だけが表示されます。 続きを
                 表示する場合には、"l" を使用してください。

     /pattern/   ソースコード上で、pattern を用いて正規表現による
                 検索を行う。 最後の / はなくてもかまいません。

     ?pattern?   ソースコード上で、pattern を用いて正規表現による
                 逆方向検索を行う。 最後の ? はなくてもかまいま
                 せん。

     L           ブレイクポイントまたはアクションをもつ行をリスト
                 アップする。

     S           すべてのサブルーティン名をリストアップする。

     t           トレースモードの on/off を切り替える (トグル)。

     b line [ condition ]
                 ブレイクポイントを設定する。 line を省略すると
                 まさに実行しようとしている行に、ブレイクポイント
                 を設定します。 condition が指定されると、その文
                 にさしかかる度に評価され、condition が真となった
                 ときにだけブレイクポイントが働きます。 ブレイク
                 ポイントは、実行可能な文で始まる行にだけ、設定で
                 きます。 condition には if を使いません:

                     b 237 $x > 30
                     b 33 /pattern/i


     b subname [ condition ]
                 サブルーティンの最初の実行可能文にブレイクポイン
                 トを設定します。

     d line      ブレイクポイントの削除。 line が省略されると、
                 まさに実行しようとしている行のブレイクポイントを
                 削除します。

     D           すべてのブレイクポイントの削除。

     a line command
                 line にアクションを設定する。 複数行の command
                 は、バックスラッシュと改行で書くことができます。
                 command は Perl コードであって、他のデバッガコマ
                 ンドではありません。



Perl manpages Last change: Release 5.0 Patchlevel 00            2






PERLDEBUG(1)             USER COMMANDS               PERLDEBUG(1)




     A           すべての行のアクションを削除します。

     < command   デバッガがプロンプトを出す直前に、毎回実行するア
                 クションを設定します。 複数行の command は、バ
                 ックスラッシュと改行で書くことができます。

     > command   スクリプトの実行に戻るコマンドを入力した時に、デ
                 バッガがプロンプトを出した後で、毎回実行するアク
                 ションを設定します。 複数行の command は、バッ
                 クスラッシュと改行で書くことができます。

     V package [symbols]
                 package (デフォルトは main) 内のすべて (または、
                 一部) の変数 (variable) をデータプリティプリンタ
                 を使って表示する (ハッシュは何が何か解るように、
                 key と value を表示し、コントロール文字は表示で
                 きる形にします)。 以下に示すように、symbol は名
                 前だけを示し、($ などの) 型識別子を付けないよう
                 にしてください:

                     V DB filename line


     X [symbols] "V" コマンドと同じだが、現在のパッケージについて、
                 表示する。

     ! number    デバッグコマンドを再実行する。 number が省略さ
                 れると、直前のコマンドを実行する。

     ! -number   指定数値分前のコマンドを実行する。

     H -number   最近の指定数値分のコマンドを表示する。 2 文字以
                 上のコマンドのみが表示されます。 number が省略
                 されると、全てを表示します。

     q or ^D     クイット。 ("quit" はこの目的には使えません。)

     command     command を Perl の文として実行します。 セミコロ
                 ンはなくてもかまいません。

     p expr      print DB::OUT expr と同じ。 STDOUT がどこにリダ
                 イレクトされていても、ファイルハンドル DB::OUT
                 は、/dev/tty に対してオープンされています。

     デバッガが認識できないコマンドを入力すると、Perl のコードと
     して、直接 eval されます。 先頭にスペースを入れると、デバッ
     ガは、デバッガコマンドと認識しません。

     コンパイル時に実行されるコマンド (BEGIN ブロック内のコードや
     use 文) があれば、それらはデバッガによって止めることができま
     せん (require は可能)。 しかし、以下のような文を自分でコー



Perl manpages Last change: Release 5.0 Patchlevel 00            3






PERLDEBUG(1)             USER COMMANDS               PERLDEBUG(1)



     ドに含めれば、デバッガに制御を渡すことができます。 この文は、
     デバッガを起動していないときには、何もしません:

         $DB::single = 1;


     カスタマイズ

     デバッガを変更したい場合には、perl5db.pl を Perl ライブラリ
     から別の名前にコピーし、必要に応じて修正してください。 また、
     環境変数 PERL5DB には、以下のように設定する必要があるでしょ
     う:

         BEGIN { require "myperl5db.pl" }

     初期化コードを入れたファイル .perldb を設定することでも、い
     くらかのカスタマイズができます。 たとえば、以下のようなエイ
     リアスが行えます (特に最後のものは、多くの人が使うでしょう):

         $DB::alias{'len'} = 's/^len(.*)/p length($1)/';
         $DB::alias{'stop'} = 's/^stop (at|in)/b/';
         $DB::alias{'.'} = 's/^\./p '
                         . '"\$DB::sub(\$DB::filename:\$DB::line):\t"'
                         . ',\$DB::dbline[\$DB::line]/' ;


     他のリソース

     -w スイッチはもう使いましたよね?

BUGS
     プログラムで exit() や die() を行なう場合には、デバッガも終
     わります。

     1 度終了して、再起動する以外に、デバッガを再実行する組み込み
     のしくみは用意されていません。 以下のようなエイリアスを行な
     うことができます:

         $DB::alias{'rerun'} = 'exec "perl -d $DB::filename"';

     しかし、設定中のブレイクポイント情報は失われますし、正しいパ
     スでない可能性がある、といったことに注意しなくてはなりません。













Perl manpages Last change: Release 5.0 Patchlevel 00            4